シグナル状態 – プログラミング – Home

通知
すべてクリア

[解決済] シグナル状態


いしだ
 いしだ
(@いしだ)
ゲスト
結合: 17年前
投稿: 53
Topic starter  

スレッド絡みの用語について質問させていただきます。

スレッドの終了を待つサンプルとして、
WaitForSingleObjectを使うものをよく見けますが、APIの解説を見ると、
「指定されたオブジェクトがシグナル状態になるのを待つ」と書かれています。

「スレッドがシグナル状態になる」とは、
終了したことを表すものなのでしょうか?


引用未解決
トピックタグ
いしだ
 いしだ
(@いしだ)
ゲスト
結合: 17年前
投稿: 53
Topic starter  

> 「スレッドがシグナル状態になる」とは、
> 終了したことを表すものなのでしょうか?

ちょっと言葉足らずな質問でしたので追記させていただきます。

WaitForSingleObjectで待機開始後にスレッドが終了したり、
あるいは待機開始前にすでにスレッドが終了していたりすると、
WaitForSingleObjectを抜けるのは体験的に理解していますが、
処理内容によっては終了していなくても「シグナル状態」になる、
ということは起こりえないものなのでしょうか?


返信引用
ryo
 ryo
(@ryo)
ゲスト
結合: 23年前
投稿: 252
 

http://msdn.microsoft.com/ja/library/ms686364(v=vs.85).aspx
より
Its state is set to nonsignaled while the thread is running,
and set to signaled when the thread terminates.


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

ちなみにですが、引き渡すハンドルが何を指しているかによって
意味合いが違ってきますから、スレッドのハンドルならこうなるとか
セマフォのハンドルならこうなるとか、そういう風に整理する必要が
あると思います。

日本語のMSDNに書かれていない場合でも原書(英語版)には書かれている
ケースは結構有るので日本語版で見つけられない時は原書を見た方が
良いと思います。日本語版の場合、機械翻訳が増えてきて和訳の内容が
怪しいケースも有るみたいですし。


返信引用
いしだ
 いしだ
(@いしだ)
ゲスト
結合: 17年前
投稿: 53
Topic starter  

MSDNの中身は一通り調べてみたつもりだったのですが、
チェックが足りなかったようです。

いつもGetExitCodeThreadを使ってSTILL_ACTIVEかどうかで
スレッドがまだ終了していないかどうかを判定していましたが、
if (WaitForSingleObject(m_pThread->m_hThread, 0) == WAIT_TIMEOUT)
のような記述でよかったのですね。

ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました