2018년 3월 31일 토요일

semaphore - posix, osx, win32

Semaphore


Posix


#include <semaphore.h>

구조체

sem_t sem;

초기화

sem_init(&sem, 0, 1);

wait

sem_wait(&sem);

post

sem_post(&sem);

destroy

sem_destroy(&sem);


osx


#include <dispatch/dispatch.h>

구조체

dispatch_semaphore_t sem;

초기화

sem = dispatch_semaphore_create(1);

wait

dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);

post

dispatch_semaphore_signal(sem);

destory

API 없음


Windows


#include <Windows.h>


구조체

HANDLE sem;

초기화

sem = CreateSemaphore(NULL, 1, 1, NULL);

wait

WaitForSingleObject(sem, INFINITE);

post

ReleaseSemaphore(sem, 1, NULL);

destroy

CloseHandle(sem);

댓글 없음:

댓글 쓰기