Tec*_*rry 6 c++ multithreading visual-c++ beginthread
我试图通过将函数传递给_beginthread来从main创建一个基本线程.但我的输出没有完成.
我得到以下输出:
Starting thread
48
Main ends
I
Run Code Online (Sandbox Code Playgroud)
有人可以澄清以下代码中的错误吗?
#include <iostream>
#include <process.h>
using namespace std;
void test(void *param)
{
cout << "In thread function" << endl;
Sleep(1000); // sleep for 1 second
cout << "Thread function ends" << endl;
_endthread();
}
int main()
{
cout << "Starting thread" << endl;
cout << _beginthread(test,0,NULL);
cout << "Main ends" << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
kup*_*spb 10
因为从main返回将停止应用程序中的任何线程.你需要等待直到线程停止.全球变量最简单的解决方案 - 诚实的非常糟糕的例子.你需要在线程的句柄上使用wait函数.
#include <iostream>
#include <process.h>
using namespace std;
bool threadFinished = false;
void test(void *param)
{
cout << "In thread function" << endl;
Sleep(1000); // sleep for 1 second
cout << "Thread function ends" << endl;
threadFinished = true;
_endthread();
}
int main()
{
cout << "Starting thread" << endl;
cout << _beginthread(test,0,NULL);
while(!threadFinished)
{
Sleep(10);
}
cout << "Main ends" << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如何使用等待功能:
HANDLE hThread;
hThread = (HANDLE)_beginthread( test, 0, NULL);
WaitForSingleObject( hThread, INFINITE );
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
56590 次 |
最近记录: |