PTHREAD_SETCONCURRENCY

Section: Linux Programmer's Manual (3)
Updated: 2017-09-15
Index JM Home 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/ に書かれている。

関連キーワード

pthread, レベル, 並列, getconcurrency, 実装, 処理, setconcurrency, PTHREAD, SETCONCURRENCY, エラー

Linux マニュアル 一覧

[man1] [man2] [man3] [man4] [man5] [man6] [man7] [man8]
[a] [b] [c] [d] [e] [f] [g] [h] [i] [j] [k] [l] [m] [n] [o] [p] [q] [r] [s] [t] [u] [v] [w] [x] [y] [z]

 

Index

名前
書式
説明
返り値
エラー
バージョン
属性
準拠
注意
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 12:08:42 GMT, June 11, 2022