「pthread errnoとpthreadライブラリ関数の戻り値」の版間の差分
提供: C言語入門
(ページの作成:「マルチスレッドライブラリ pthreadライブラリのほとんどのpthread関数は、成功すると0を返し、失敗した場合は、エラー番号を...」) |
(相違点なし)
|
2014年5月11日 (日) 16:25時点における最新版
マルチスレッドライブラリ pthreadライブラリのほとんどのpthread関数は、成功すると0を返し、失敗した場合は、エラー番号を返します。pthread関数は、errnoをセットしません(ごく一部はセットしているようですが)。
概要
マルチスレッドで大域変数errnoを使用していたら、誰(どのスレッド)のエラーだかわからなくなりそうですが。
関数 | 戻り値 | errno |
---|---|---|
pthread_create | エラー番号 | セットされた |
pthread_join | エラー番号 | セットされない |
pthread_mutex_lock | エラー番号 | セットされない |
pthread_create
不思議なことに pthread_create は、エラー番号を返しつつ、errno にも値を設定してくれました。 pthread_create でスレッドを大量に作り、リソースが足りなくなって、pthread_createが失敗するコードを実行すると以下のようになりました。
- | エラー番号 | エラーメッセージ |
---|---|---|
errno | 67 | Too many processes |
return value | 35 | Resource temporarily unavailable |
pthread_join
同じスレッドIDでpthread_joinを2回した場合は、以下の値になります。
- pthread_joinは、2を返す。
- No such process
pthread_mutex_lock
同じmutexに、pthread_mutex_lockを2回した場合は、以下の値になります。
- pthread_mutex_lockは、11を返す。
- Resource deadlock avoided
関連項目
- pthreadとは
- pthread errnoとpthreadライブラリ関数の戻り値
- pthread 1つのスレッドを動かす
- pthread 2つのスレッドを動かす
- pthread mutexで排他ロックする方法
- pthreadのスレッド識別子pthread_t型
- pthread スレッドに値を渡す方法
- pthread スレッドから値を返す方法