尽量使用 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)
本文强调了在Mac平台上使用sem(信号量)替代pthread_cond的理由,因为sem是原子操作,能防止信号丢失。同时,指出了Mac不支持sem_init和sem_destroy,需用sem_open和sem_unlink进行替代,并提到了与之相关的mutex初始化和销毁的区别。

1595

被折叠的 条评论
为什么被折叠?



