C++线程:如何阻止一个线程在其他线程运行时执行(Win32)
此问题在Visual Studio中的Win32环境中仍然存在。 我有两门课:C++线程:如何阻止一个线程在其他线程运行时执行(Win32),c++,multithreading,visual-studio,x86,thread-synchronization,C++,Multithreading,Visual Studio,X86,Thread Synchronization,此问题在Visual Studio中的Win32环境中仍然存在。 我有两门课: void classA::DoSth(HWND param){ for(int i = 0; i<24; i++) std::cout<<i<<"\n"; } void classB::DataGood(HWND param){ std::cout<<"OKAY\n"; } main app.h class MainApp:public CWinApp{
void classA::DoSth(HWND param){
for(int i = 0; i<24; i++)
std::cout<<i<<"\n";
}
void classB::DataGood(HWND param){
std::cout<<"OKAY\n";
}
main app.h
class MainApp:public CWinApp{
MainApp();
};
extern MainApp theApp;
MainApp.cpp
MainApp theApp;
输出:
如何确保循环先完成运行,然后再执行其他一些操作
我所做的研究:
作为一名初学者,我确实做了一些努力,试图添加互斥并限制资源共享。我没有成功,因为我无法确定两个类/函数之间共享了哪些资源
我已经确保包含所有的include,并且程序编译并运行在这种情况下,理想的共享资源是一个条件变量,这是线程同步的另一种方式 你可以在这里阅读更多关于他们的信息- 基本上,您将维护一个标志,即条件变量,当打印完数字时,运行循环的踏板将发出信号
如果您正确地同步另一个线程,则会阻止它们,直到第一个线程发出更改条件变量的信号。如果您要使用MFC,for-CEvent是否与您的问题类似?一些开始阅读的材料,可以让一个线程执行thread2.join以等待它退出吗?
MainApp theApp;
1
2
3
OKAY
4
5
OKAY
6
7
8
OKAY
9-23