티스토리 뷰

C \C++

pthread c - basic pthread usage method

미스터폴 2020. 6. 13. 10:47
반응형

1. 전처리기 등록

 

#include<pthread.h>

 

 

2. 스레드 생성

int pthread_create(pthread_t* thread, const pthread_attr_t* attr, void* (*start_routine)(void*), void* arg);

 

pthread_t* thread : 스레드 포인터구조체

const pthread_attr_t* attr : 스레드 옵션 포인터구조체

void* (*start_routine)(void*) : 실행함수 포인터

void* arg : 실행함수 전달인자

 

3. 스레드 종료

 

int pthread_join(pthread_t thread, void **value_ptr);

 

pthread_t thread : 스레드 포인터 구조체

void **value_ptr : 결과 반환값 포인터

 

4. 락킹 

 : 다른 쓰레드가 메모리 침범방지하는 잠금을 거는것

 

4-1 뮤텍스(잠금/안잠금 상태존재하며, 락을건 스레드가 락해제 가능)

 

int pthread_mutex_lock(pthread_mutex_t *mutex);
int pthread_mutex_unlock(pthread_mutex_t *mutex);

 

pthread_mutex_t *mutex : 해당뮤텍스 구조체 포인터

 

 

4-2 세마포어

 

- 전처리추가

#include <semaphore.h>

 

- 세마포어 생성(named 방식)

sem_t sema_open(const char *name, int oflag, mode_t mode, unsigned int value);

 

const char *name : 세마포어이름

int oflag : 생성옵션 (최초생성: O_CREAT, 이미생성되어 중복생성: O_EXCL)

mode_t mode : 세마포어의 허가권

unsigned value : 세마포어 초기화값 ( 주로1, unlock : 1, lock : 0 )

 

- 세마포어 초기화(unnamed방식, 멀티스레드시, 프로세스간동기화기능있음)

int sem_init(sem_t* semaphore, int pshard, unsigned int value);    

 

sem_t* semaphore: 세마포어구조체포인터

int pshard:  공유범위 (0 : 스레드간공유, !0 : 프로세스간공유)

unsigned value : 세마포어 초기화값 ( 주로1, unlock : 1, lock : 0 )

 

- 세마포어 제거

int sem_destroy(sem_t* semaphore);

 

 

- 세마포어 lock

int sem_wait(sem_t* semaphore);

: 상태 -1

 

-세마포어 unlock

int sem_post(sem_t* semaphore);

: 상태 +1

반응형

'C \C++' 카테고리의 다른 글

linux task priority  (0) 2022.06.07
[Cpp] json 프로그래밍 준비하기  (1) 2020.06.21
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
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
글 보관함