尽量使用 sem 代替 pthread_cond
因为 pthread_cond 会有丢失信号的问题,sem 是原子操作,所以不会丢失信号
Mac 下对 sem_init()/sem_destory() 不支持:
注意:
MacOS 不支持 sem_init()
和 sem_destroy()
;这个例子若是想在 mac 下编译通过,需要自行修改替换相关的函数。
sem_init(&sem, 0, 1)
改成sem_open("sem", O_CREAT|O_EXCL, S_IRWXU, 0)
sem_destory(&sem)
改成sem_unlink("sem");
- 且支持
pthread_mutex_init(&mutex, NULL)
却不支持pthread_mutex_destory(&mutex)