Provided by: manpages-ja-dev_0.5.0.0.20210215+dfsg-1_all
名前
pthread_setconcurrency, pthread_getconcurrency - 並列処理レベルの設定/取得を行う
書式
#include <pthread.h> int pthread_setconcurrency(int new_level); int pthread_getconcurrency(void); -pthread でコンパイルしてリンクする。
説明
pthread_setconcurrency() 関数は、アプリケーションが希望する 並列処理レベル (concurrency level) をスレッド実装に通知する。 希望する並列処理レベルは new_level で指定する。 スレッド 実装はこの情報をヒントとしてのみ利用する。 POSIX.1 では、 pthread_setconcurrency() の呼び 出した結果、 どのような並列度になるべきかは規定されていない。 new_level に 0 を指定すると、スレッド実装は並列処理レベルを 実装側で適切とみなしたレベルに 設定するようになる。 pthread_getconcurrency() は、このプロセスの concurrency level の現在値を返す。
返り値
成功すると、 pthread_setconcurrency() は 0 を返す。 エラーの場合、 0 以外のエラー番号を返 す。 pthread_getconcurrency() は常に成功し、最後の pthread_getconcurrency() の呼び出しで設定さ れた concurrency level を返す。 pthread_getconcurrency() が それまでに一度も呼び出されてい ない場合は 0 が返る。
エラー
pthread_setconcurrency() は以下のエラーで失敗する場合がある。 EINVAL new_level が負である。 POSIX.1-2001 には、エラー EAGAIN も記載されている (「new_level に指定された値を適用する と、システムリソースが 超過してしまう」)。
バージョン
これらの関数は glibc バージョン 2.1 以降で利用できる。
属性
マルチスレッディング (pthreads(7) 参照) 関数 pthread_setconcurrency() と pthread_getconcurrency() はスレッドセーフである。
準拠
POSIX.1-2001.
注意
デフォルトの concurrency level は 0 である。 並列処理レベルが意味を持つのは M:N スレッド実装の場合のみである。 M:N スレッド実装では、あ る瞬間において、あるプロセスのユーザーレベルスレッ ドの集合のサブ集合が、そのサブ集合のサ イズよりも少ない数のカーネルの スケジューリング実体 (kernel-scheduling entity) に結び付け られる。 並列処理レベルを設定すると、そのアプリケーションの効率的な実行に必要な カーネルの スケジューリング実体の数のヒントを、アプリケーションはシステ ムに伝えることができる。 LinuxThreads と NPTL のどちらも 1:1 スレッド実装であり、 並列処理レベルを設定しても何の意 味もない。 言い換えると、 Linux では、これらの関数は、 他のシステムとの互換性のためだけに 存在し、 プログラムの実行には何の影響も与えないということである。
関連項目
pthread_attr_setscope(3), pthreads(7)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。