windowsのスレッドについての質問です。
今、手元にある書籍のスレッドを作る節にCreateThread()関数を使ってスレッドを作るサンプルプログラムが載っています。
その中では CloseHandle()関数が一切呼ばれていません。
しかも、そのサンプルではいくつもスレッドを作り、そのスレッドはプログラム中でいくつも終了するようなものです。CloseHandle()は呼び出さなくても問題ないのでしょうか?
しかし、ネットで調べてみるとCloseHandle()を呼び出さなくてはいけないということが書かれていました。
http://www.daccho-it.com/program/WinApi/thread.htm
↑
参考にしたサイト
そこでいくつか質問です。
プロセスが終了するときにスレッドのハンドルは自動的に閉じられるという認識で大丈夫でしょうか?
CreateThread()、_beginthreadex関数はCloseHandle()を呼び出す必要があるで大丈夫でしょうか?
となると、CreateThread()の戻り値は必ず変数に保存しておく必要があるということですか?
書籍のサンプルではCreateThread()の戻り値はどこにも保存していませんでした、保存しない場合ハンドルが作られないってことはさすがにないですよね?
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
まず、プロセスが終了するときにはスレッドハンドルに限らずプロセスが所有する全てのハンドルが閉じられますので、それは大丈夫です。
次にハンドルは原則として閉じる必要があります。基本的にハンドルが必要なければ受け取ってすぐに閉じて良いです。ただ受け取らずに放置しても少しメモリが無駄になるだけですので、長時間動かして多数のスレッドを作るプログラム以外では放置しても実害は少ないです。
余談ですが、Excel VBAではハンドルを閉じるタイミングに注意が必要でした。Excel VBAでCreateThreadを使ったときはスレッド終了前にCloseHandleしたらExcelが応答しなくなりました。
# たぶんExcel内で同じハンドルを保持して使っているのだと思う
回答ありがとうございます。
参考になります。
プロセスが終了するときに全て閉じられるのならそれほど気にしなくても大丈夫なんですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スレッド内のCString使用
-
マルチスレッドプログラム
-
C++マルチスレッド処理について
-
win32 スレッドのハンドルついて
-
VC++スレッドの正しい終了のさ...
-
スレッドの終了はどうやるんで...
-
Macターミナルで実行中のプログ...
-
分を時間に変換するプログラム
-
アセンブラのタイマー割り込み
-
StrConvの使い方について教えて...
-
C++からCへのソース変換について
-
Windows10でDOSゲーム
-
Excel VBA で処理中断(DoEvents...
-
マイコンからプログラムを読み...
-
スーパーのレジで並んでいたら...
-
vba GetAsyncKeyState関数について
-
WriteFile()でのデータ送信がで...
-
C言語 再帰処理のメリットとデ...
-
PHPで、日本語からアルファベッ...
-
C++でシェルを起動
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WaitForSingleObjectの使い方に...
-
VC++スレッドの正しい終了のさ...
-
Windows上で、シグナル(SIGTERM...
-
スレッドの安全な終了のさせ方
-
スレッドの監視方法について
-
スレッドにて同一メモリの書き...
-
別スレッドのデータを受信できない
-
スレッドの終了はどうやるんで...
-
同一スレッドで、ロックをかけ...
-
スレッドの終了の仕方
-
別スレッドからメインダイアロ...
-
_beginthreadexで生成したスレ...
-
待機関数(WaitForMultipleObjec...
-
VB2005 シリアル通信のClose処理
-
マルチスレッドについて
-
Linuxでスレッド優先度って変え...
-
msec単位のWait Timerが作れない!
-
自作クラスのイベントを外部ハ...
-
スレッド一覧の取得
-
C# スレッドから親ウィンドウへ...
おすすめ情報