マルチスレッドプログラミング相談室 その6
■ このスレッドは過去ログ倉庫に格納されています
0800777
2008/06/13(金) 23:54:51これ以上はスレが荒れるといかんのでやめてくれ。これが最後だ。
・サブスレッド実行したままmain終了するな
・vector<image>は大丈夫か? imageのコピーコンストラクタ呼ばれまくるぞ
・「LockでWaitForSingleObjectの戻り値確認しろ」って言ったよな? 聞いてる?
同期オブジェクトをロックしたまま自身をサスペンドしたら誰がロック解除するんだ
→ 罰として、Win32APIの全呼び出しをエラーチェックしろ
→ 罰として、全行の間にデバッグ用のprintf入れて何が起きてるか理解しろ
→ 罰として、「これはmainスレッドから呼ぶ」/「これはサブスレッドから呼ぶ」
のコメントを全関数に書け
→ 罰として、これから一年 SuspendThread の使用を禁ず。危険すぎる。
お前のやりたいことをするにはpthreadの条件変数を使うのが自然だが
Win32には無いのでとりあえずresume/suspendを ↓ に書き直せ
class x {
HANDLE suspend_lock;
protected:
void i_am_Thread_and_i_will_wait_until_someone_resume_me()
{ ::ResetEvent(this->suspend_lock);
::WaitForSingleObject(this->suspend_lock, INFINITE); }
public:
x() : suspend_lock(::CreateEvent(NULL, TRUE, FALSE, NULL)) {}
void run() { /* .......*/ }
void i_am_main_and_i_resume_Thread()
{ ::SetEvent(this->suspend_lock); }
};
■ このスレッドは過去ログ倉庫に格納されています