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)

 


版权声明:本文为star871016原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。