gpt4 book ai didi

c++ - 在 Win32/MFC 中停止线程

转载 作者:太空狗 更新时间:2023-10-29 19:55:51 24 4
gpt4 key购买 nike

我正在阅读一些与线程相关的代码并找到了这段代码:

MyThread::start()
{
//Create a thread
m_pThread = AfxBeginThread(/*some parameters*/)

//Create a duplicate handle for the created thread
m_hDuplicateHandle = DuplicateHandle(/* some more parameters*/)
}

MyThread::stop()
{
//Set some variables so that the thread comes out of its run() function
WaitForSingleObject(m_hDuplicateHandle, defaultTimeout);

CloseHandle(m_hDuplicateHandle);
}

我的问题,为什么需要重复句柄?我们不能直接等待原始线程句柄吗?它会以某种方式变得无效吗?

最佳答案

AfxBeginThread 返回一个 CWinThread* 并且 MFC 假定它将管理与线程关联的句柄。

因此,为了直接安全地使用句柄,您需要复制它,否则当线程结束时,MFC 可能在您到达 WaitForSingleObject 调用之前关闭句柄。

如果您直接使用 win32 CreateThread API,那么您当然可以直接等待返回的句柄。

关于c++ - 在 Win32/MFC 中停止线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/663071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com