반응형
_beginthreadex를 사용하기 위해서 process 헤더를 추가해줍니다.
<_beginthreadex 함수 구성>
1
2
3
4
5
6
7
8
|
uintptr_t _beginthreadex(
void *security, // 보안속성
unsigned stack_size, // 스택 사이즈
unsigned ( *start_address )( void * ), // 스레드 함수
void *arglist, // 스레드 함수 인자
unsigned initflag, // 생성 옵션
unsigned *thrdaddr // 스레드 ID 반환
);
|
cs |
스레드 종료 함수
|
_endthreadex(0);
|
cs |
스레드 식별자는 리턴값으로 받습니다.
|
HANDLE handle = _beginthreadex(NULL, 0, thread, 0, 0, NULL);
|
cs |
받은 핸들로 thread를 종료합니다.
|
CloseHandle(handle);
|
cs |
스레드를 이용해서 1초에 한번 "hi"라는 문자열 , 3초에 한번 "hello"라는 문자열을 출력하기
더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#include <stdio.h>
#include <windows.h>
#include <process.h>
unsigned __stdcall Thread(void *arg)//스레드 함수
{
while(1){
printf("%s\n",(char*)arg);
Sleep(1000);
}
_endthreadex(0);
return 0;
}
unsigned __stdcall Thread2(void *arg)
{
while(1){
printf("%s\n",(char*)arg);
Sleep(3000);
}
_endthreadex(0);
return 0;
}
int main()
{
char *msg1 = "hi~";
char *msg2 = "hello";
HANDLE handle1= (HANDLE)_beginthreadex(NULL, 0, Thread, msg1 , 0 , NULL);
HANDLE handle2 = (HANDLE)_beginthreadex(NULL, 0, Thread2 ,msg2 , 0 , NULL);
while(!kbhit());
CloseHandle(handle1);
CloseHandle(handle2);
}
|
cs |
반응형
'프로그래밍 > 시스템' 카테고리의 다른 글
MASM 프로그래밍 (0) | 2017.11.06 |
---|---|
스레드에 대하여 (0) | 2017.08.19 |
C언어 연산 우선순위 (0) | 2017.07.26 |
[C-알고리즘] 그레이 코드 (0) | 2017.07.21 |
[C-알고리즘] 이분검색 (0) | 2017.07.19 |