y0u_bat

c언어 - pthread 쓰레드 본문

프로그래밍/C언어

c언어 - pthread 쓰레드

유뱃 2015. 11. 19. 22:53



int ptrhead_create(phtread_t *thr_id, const pthread_attr_t *attr, void *함수명,void *arg); 

// 쓰레드 생성 3번째 인자가 쓰레드에 쓰일 함수


int pthread_exit(void *return); // 현재 실행하고 있는 쓰레드 종료할때 사용


int pthread_join(pthread_t thr_id,void **thread_return);

 // 쓰레드 종료될때까지 기다리다 특정 쓰레드 종료시 자원해제



pthread 쓰레드 예제

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <fcntl.h>
#include <unistd.h>
#include <pthread.h>
 
static pthread_t thr;
static int thr_id;
static bool thr_exit = true;
static void *treturn;
 
void thread_start();
void thread_stop();
void *thread_function1(void *arg);
 
int main(int argc,char *argv[])
{
    int i = 0;
 
    thread_start();
 
    while(1)
    {
        printf("test count : %d\n",i);
        i++;
        sleep(0.2);        
    }
    
    thread_stop();
 
    return 0;
}
 
void thread_start()
{
    thr_exit = false;
    thr_id = pthread_create(&thr,NULL,thread_function1,NULL);
}
 
void thread_stop()
{
    thr_exit = true;
    thr_id = pthread_join(thr,&treturn);
}
 
void *thread_function1(void *arg)
{
    int i=0;
    while(!thr_exit)
    {
        printf("thread running : %d\n",i);
        i++;
        sleep(0.5); 
    }
 
    pthread_exit((void*)0);
}
cs



컴파일 시

gcc -o pthread pthread.cpp -lpthread  // -lpthread 옵션을 넣어줘야 된다.






컴파일 결과 




Comments