PTHREAD_SETCONCURRENCY
Section: Linux Programmer's Manual (3)
Updated: 2017-09-15
Index
JM Home Page
roff page
名前
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(),
pthread_getconcurrency()
| Thread safety | MT-Safe
|
準拠
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/ に書かれている。
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- バージョン
-
- 属性
-
- 準拠
-
- 注意
-
- 関連項目
-
- この文書について
-
This document was created by
man2html,
using the manual pages.
Time: 03:33:33 GMT, December 05, 2022