このドキュメントで説明するソフトウェアは、Extended SupportまたはSustaining Supportのいずれかにあります。 詳細は、https://www.oracle.com/us/support/library/enterprise-linux-support-policies-069172.pdfを参照してください。
Oracleでは、このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお薦めします。

機械翻訳について

5.3 Pthreadsの実装間の相違点

Pthreadsの実装間の軽微な相違は主に、標準で未指定のまま残されているか、実装依存として認められているために未指定になっている極端なケースによるものです。

  • Oracle SolarisのPthreadsには、Oracle LinuxのNPTLにはないスケジューリング優先順位属性があります。

  • POSIX標準では、すべてのスレッドが同じプロセスに属して共通のnice値を共有することを前提としています。 Oracle LinuxのNPTLスレッドは別々のプロセスで有効になるので、必ずしも共通のnice値を共有しません。

次の表は、Oracle LinuxでのPthreadプログラミングにおいて、他のオペレーティング・システムとは異なる可能性のある点を説明しています。

関数

実装上のコメント

int pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void));

parent forkハンドラとchild forkハンドラは、pthread_atfork()に対するコールで確立された順序でコールされます。 prepare forkハンドラは逆の順序でコールされます。

int pthread_attr_destroy(pthread_attr_t *attr);

int pthread_attr_init(pthread_attr_t *attr);

これらの関数は必ず正常に機能します。 移植性に対応するため、アプリケーションでは想定されるエラーの戻り値の処理が必要です。

int pthread_cancel(pthread_t thread);

void pthread_cleanup_push(void (*routine)(void *), void *arg);

void pthread_cleanup_pop(int execute)

NPTLでは、最初のリアルタイム・シグナル(シグナル32)を使用してスレッド取消し機能を実装します。

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);

新しいスレッドは、コール元スレッドの機能セットとCPUアフィニティ・マスクのコピーを継承します。