- 1 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 17:19:27 ]
- マルチスレッドプログラミングについて語るスレ
■前スレ マルチスレッドプログラミング相談室 その7 pc12.2ch.net/test/read.cgi/tech/1215253576/ ■過去スレ その1 ttp://pc3.2ch.net/tech/kako/997/997345868.html その2 ttp://pc5.2ch.net/test/read.cgi/tech/1037636153/ その3 ttp://pc8.2ch.net/test/read.cgi/tech/1098268137/ その4 ttp://pc8.2ch.net/test/read.cgi/tech/1130984585/ その5 ttp://pc11.2ch.net/test/read.cgi/tech/1157814833/ その6 ttp://pc11.2ch.net/test/read.cgi/tech/1187008532/ OS・言語・環境は問わないが、それゆえ明記すべし。 テンプレ 【OS】 【言語】 【実行環境】 【その他特記する事項】
- 337 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 17:32:40 ]
- >>326
>CloseHandle((HANDLE)_beginthreadex()); その組み合わせはちょっちまずくね? ttp://msdn.microsoft.com/ja-jp/library/cc429080.aspx にメモリリークが起きると書いてある(ちなみにやねうら本(1)にもそう書いてある) ExitThread()を明示的に呼ばなくても、スレッド関数を抜けたら同じことのはず なお、>326の反対(CreateThread()が返したハンドルを _endthread()で開放する)は明白に危険であろうことが上のリンク先から推測できる (確保されていないメモリを_endthread()が解放しようとするハズ)
- 338 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 18:07:36 ]
- 何のために_beginthread()〜_endthread()や_beginthreadex()〜_endthreadex()があるかというと
strtol()みたいに、機能的にはマルチスレッド環境下でも動いて欲しいのだが関数仕様的にマルチスレッドと相容れないような 標準関数をマルチスレッド環境でもきちんと動くようにする目的なので(おそらくそのために内部的にスレッド局所記憶を確保している) そういう類の関数を明示的にも暗黙的にも呼び出さないと誓うならCreateThread()〜CloseHandle()で無問題
|

|