Ну, если верить MSDN, то можно:
Цитата:
Сообщение от MSDN
Closing a thread handle does not terminate the associated thread or remove the thread object. Closing a process handle does not terminate the associated process or remove the process object. To remove a thread object, you must terminate the thread, then close all handles to the thread. For more information, see Terminating a Thread. To remove a process object, you must terminate the process, then close all handles to the process. For more information, see Terminating a Process.
|
Т.е. при вызове CloseHandle просто счетчик будет уменьшен на 1. Если он станет равным 0, то хэндл, сам хэндл, а не поток или процесс, будет удален из списка системных объектов.
Т.е. если другие потоки/процессы ждут освобождения хэндла, то они продолжат выполнение.
Из подводных камней.
1. При повторном вызове CloseHandle, например, в вызывающем коде, будет ошибка.
2. Если после CloseHandle внутри потока, этот поток еще меняет какие-либо данные, а другие потоки/процессы начинают использовать их, то есть вероятность, что будут использованны неверные/неполные данные.