Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++线程:如何阻止一个线程在其他线程运行时执行(Win32)_C++_Multithreading_Visual Studio_X86_Thread Synchronization - Fatal编程技术网

C++线程:如何阻止一个线程在其他线程运行时执行(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{

此问题在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{
    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