plucky (3) pthread_getconcurrency.3.gz

Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       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 also documents an EAGAIN error ("the value specified by new_level would cause a  system  resource
       to be exceeded").

バージョン

       これらの関数は glibc バージョン 2.1 以降で利用できる。

属性

       この節で使用されている用語の説明については、 attributes(7) を参照。

       ┌──────────────────────────┬───────────────┬─────────┐
       │インターフェース属性      │
       ├──────────────────────────┼───────────────┼─────────┤
       │pthread_setconcurrency(), │ Thread safety │ MT-Safe │
       │pthread_getconcurrency()  │               │         │
       └──────────────────────────┴───────────────┴─────────┘

準拠

       POSIX.1-2001, POSIX.1-2008.

注意

       デフォルトの 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 プロジェクトのリリース 5.10  の一部である。プロジェクトの説明とバグ報告
       に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。