Jim*_*ell 4 c++ multithreading visual-studio-2008
当我的应用程序准备关闭时,使用CreateThread
以下算法创建它:
_bCloseRequested = TRUE;
dwMsThen = ::GetTickCount();
do
{
::GetExitCodeThread( m_hThread, &dwExitCode );
dwMsNow = ::GetTickCount();
}
while( (dwExitCode == STILL_ACTIVE) && ((dwMsNow - dwMsThen) < 50000UL) );
Run Code Online (Sandbox Code Playgroud)
如果线程在5个分配的秒内未能关闭,是否应该关闭线程句柄,或者是否允许它保持打开状态?谢谢.
首先,不要等待线程像这样完成.您将耗尽所有可用的CPU时间等待,这也是您的线程需要更长时间才能完成的缺点!
使用这样的东西代替:
WaitForSingleObject(m_hThread, 50000);
Run Code Online (Sandbox Code Playgroud)
也就是说:是否要让线程继续运行取决于线程的作用.即使你的主应用程序开始做其他事情,它甚至可以运行吗?是否有关键的东西(文件,连接,数据库......)打开,如果你杀死线程将保持打开状态?在决定是杀死线程还是让它继续运行之前,你必须考虑所有这些.
归档时间: |
|
查看次数: |
464 次 |
最近记录: |