본문 바로가기

프로그래밍/시스템

[C] _beginthreadex

반응형

_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, 00, 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 , , NULL);
    HANDLE handle2 = (HANDLE)_beginthreadex(NULL, 0, Thread2 ,msg2 , , 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