【发布时间】:2012-07-24 10:20:01
【问题描述】:
我正在考虑更改一些我想在 linux、unix 和 OSX 上运行的代码。代码中有一些对 sem_init 的调用,但 pshared 值设置为零。我在 Rochkind 关于 unix 编程的书上做了一些阅读,他基本上说不共享的 sem_init 与 pthread_mutex_init 相同,因为它以内存中的二进制方式运行。
问题是 - 我可以安全地将这些 sem_init 更改为 pthread_mutex_init,还是使用 sem_open 来获得此代码的更便携版本?
OSX 不支持未命名的信号量,但我猜其他两个支持。我真的不想有一个单独的编译标志 #ifdef(__APPLE__) 或其他东西。
谢谢
【问题讨论】:
-
如果我关心支持这样一个损坏的操作系统,我会为 OSX 正确实现
sem_*接口的libosxsemaphore库,然后要求安装它并链接我的应用程序在 OSX 上构建时反对它。可能破坏您的代码以解决 OSX 被破坏的问题似乎不是一个好主意...
标签: c macos unix pthreads semaphore