У меня есть основной поток, который принимает действия, требующие определенного времени. Поэтому я создаю поток и делегирую ему задание. Эта функция выполнения вызывается основным потоком при получении заданий. каждая работа реализует это выполнение.Когда звонить CloseHandle?
Return_type execute(Arguments_here) {
// if a file read case
DWORD threadId;
HANDLE hThread = CreateThread(
NULL, // default security attributes
0, // use default stack size
MyAsyncFileRead, // thread function name
details, // argument to thread function
0, // use default creation flags
&threadId); // returns the thread identifier
// else do other work
}
Теперь, так как я не хочу ждать в главном потоке, я не называю WaitForSingleObject. [Мои знания о потоках в Windows низки. поэтому, если это не требуется, простите меня]
Если я подожду, когда нить закроется, она будет ждать мой основной поток. Я не хочу этого делать. Итак, когда я называю CloseHandle?
Когда у вас есть 10 заданий в руке и один создает 10 потоков, а затем дождался завершения всех 10 потоков, тогда он выглядит хорошо для wait_for_multiple_objects, а затем вызывает CloseHandle для каждого дескриптора.
Но что я должен делать в этом случае?
[Я полагаю, что этот вопрос был бы уместен для всех ОС, так что их тоже помечали. ]
Не беспокойтесь об этом и используйте '' :) –
chris
Очевидно, что вы указали все причины немедленного вызова CloseHandle (hThread). После проверки, что вам действительно удалось запустить его, конечно. –