マルチスレッド
_beginthreadexはスレッドを終了した場合ハンドルを残すようだが、_beginthreadは消すそうだ。 スレッドを作ったら放置な管理人には_beginthreadでいいような気がしてきた。 公式には、_beginthreadex推奨らしいのだが・・・。
C/C++言語にて_beginthreadexを使ってスレッドを作成したとき、戻り値としてスレッドのハンドルを取得できます。 通常はスレッドが終了したのを確認した後、CloseHandleして後処理をします。 ではスレッド実行中にCloseHandleしてやるとどうなるでしょうか。…
管理人の環境はVisual Studio 2008で、いろいろライブラリが入っていて、今回の記事のような心配はないようだ。 だが、知っておくとエラーを見たときにすぐに対処できるだろう。 まず、以下のようなマルチスレッドのプログラムを作成したとする。 #include <stdio.h> </stdio.h>…