티스토리 뷰
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
- 변환기
- abraunegg
- euromap
- 창안열림
- 확장모니터
- 유니코드변환
- 리눅스
- raspberrypi
- 공백제외
- 유로맵12
- 취출로봇
- 단어수세기
- 패키지관리자
- 라즈베리파이4
- 데비안
- 애플서비스센터
- 라즈베리파이3
- vhdx
- 배터리성능
- 문자변환
- WSL
- debian12
- packages
- OneDrive
- 공백포함
- packages.gz
- wsl2
- 업무질
- windows10
- 유로맵67
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |