linux 信号量sem_t和pthread_cond_t 的区别

 

尽量使用 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)

猜你喜欢

转载自blog.csdn.net/star871016/article/details/109688578
今日推荐