在C++ for Windows中挂起并恢复主线程

A J*_*son 3 c++ multithreading

我需要能够在Windows C++应用程序中暂停和恢复主线程.我用过

handle = GetCurrentThread();
SuspendThread(handle);
Run Code Online (Sandbox Code Playgroud)

然后应该恢复到哪里

ResumeThread(handle);
Run Code Online (Sandbox Code Playgroud)

暂停它工作,恢复它没有.我有其他线程被暂停和恢复没有问题,是否有一些与主线程不同的东西.

我已经在C#和Java中做了很多线程工作,但这是我第一次用C++完成任务,我发现它有点不同.

tyr*_*nid 12

你在另一个线程中使用GetCurrentThread()获得的"句柄"值吗?如果是这样,那就是伪造的价值.要获得真正的线程句柄,请使用DuplicateHandle或尝试

HANDLE hThread = OpenThread(THREAD_ALL_ACCESS, FALSE, GetCurrentThreadId());


Mik*_*our 6

GetCurrentThread返回一个只能在调用线程中使用的"伪句柄".使用DuplicateHandle创建一个真正的句柄,另一个线程可以使用恢复主线程.

请参阅http://msdn.microsoft.com/en-us/library/ms683182%28VS.85%29.aspx

  • 天哪,我爱微软:) (2认同)