Mac OSX pthread の実装は POSIX 標準に準拠していますが、Linux で使用できるすべての pthread と関連機能が組み込まれているわけではありません。実装されていない関数はエラー コードを返すスタブとして使用できます。これは、エラーの戻りコードを厳密に検査しないコードの移植時に問題となります。このコードをコンパイルして実行しても、想定どおりに機能しない場合があります。以下に、Tiger
リリース時点で Mac OSX では使用できない、Linux pthread 固有の機能の一部を示します。
- 名前のないセマフォはサポートされていません。
- キャンセル ポイントは、POSIX 規定のものではなく、pthread_test_cancel() のみです。したがって、pthread_cancel がスレッドをキャンセルするのは、そのスレッドによって pthread_test_cancel() がコールされる場合のみです (これは Leopard では修正されています)。
- pthread_rwlock_t と再帰的なミューテックスには、静的初期化子はありません。
- ミューテックスの優先順位: pthread_mutex_setprioceiling と pthread_mutex_setprotocol はサポートされていません。これは、優先順位の上昇、継承、上限設定などのサポートがミューテックスにはないことを意味します。
- PTHREAD_SCOPE_PROCESS はサポートされていません。