【发布时间】:2012-07-06 16:48:35
【问题描述】:
在我的一个班级中,我正在使用以下方法启动一个线程:
HANDLE hThread;
unsigned threadID;
hThread = (HANDLE)_beginthreadex( NULL, 0, &myThread, NULL, 0, &threadID );
我想从这个线程调用一个必须从主线程调用的方法(该方法正在与 UI 交互)但我真的不知道该怎么做,因为主线程不能等到“myThread”通知它。
看过很多
while(true){
//wait something from myThread
}
但我等不及了!
有什么想法吗?
【问题讨论】:
-
这必须在什么平台上运行? C++ 中的线程是一个非常依赖于平台的东西。
-
我的平台是Windows!
-
你需要
EnterCriticalSection()。 -
我看不到如何使用 EnterCriticalSection() 来解决我的问题!
-
您可以使用 PostMessage()/PostThreadMessage() 从您创建的线程中通知您的主线程,同时保持在传统的消息循环中。根据您的线程是否需要响应,它可以使用其他同步对象和共享资源等待响应,或者您可以在创建的线程中使用消息循环和 PostThreadMessage() 来获取结果。
标签: c++ multithreading user-interface synchronization