マルチスレッドのプログラミング

スレッド多重度の設定

pthread_setconcurrency(3THR)

プロセス内の非結合スレッドは、同時にアクティブにする必要がある場合と、そうでない場合があります。デフォルトでは、スレッドの実装は、プロセスの処理を続行できる数のスレッドをアクティブにするように設定されています。デフォルト値のままにするとシステムリソースは節約できますが、最適の多重度ではない場合もあります。

pthread_setconcurrency(3THR) を使用すると、 アプリケーションからスレッドの実装に、望ましい多重度 new_level を通知させることができます。この関数呼び出しの結果として実装が提供する実際の多重度は、定義されていません (Solaris スレッドについては、「thr_setconcurrency(3THR)」参照)。

new_level が 0 の場合は、pthread_setconcurrency() が呼び出されなかったものとして、実装が任意の多重度を指定します。

アプリケーションは pthread_setconcurrency() を呼び出すときに、実装に目標多重度を通知します。実装はこの値を、要求ではなく参考として使用します。


#include <pthread.h>

int pthread_setconcurrency(int new_level);

戻り値

以下の戻り値は、pthread_setconcurrency() が失敗したことを示します。


EINVAL

new_level で指定された値が負の値です。


EAGAIN

new_level で指定された値を使用するとシステムリソースの容量を超えます。