永发信息网

c++多线程中主线程运行机制

答案:2  悬赏:0  手机版
解决时间 2021-01-28 07:40
  • 提问者网友:记得曾经
  • 2021-01-27 23:50
#include
#include
using namespace std;
DWORD WINAPI Fun1Proc(LPVOID IpParameter);
DWORD WINAPI Fun2Proc(LPVOID IpParameter);
HANDLE hMutex;
void main()
{
HANDLE hThread1;
HANDLE hThread2;
hMutex = CreateMutex(NULL, FALSE, NULL);
hThread1 = CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
hThread2 = CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);
CloseHandle(hThread1);
CloseHandle(hThread2);
cout<<"main:running"< Sleep(4000);
}
DWORD WINAPI Fun1Proc(LPVOID IpParameter)
{
WaitForSingleObject(hMutex,INFINITE);
cout<<"fun1:a"< ReleaseMutex(hMutex);
return 0;
}
DWORD WINAPI Fun2Proc(LPVOID IpParameter)
{
WaitForSingleObject(hMutex,INFINITE);
cout<<"fun2:b"< ReleaseMutex(hMutex);
return 0;
}
为何主线程有时会输出两次?主线程的运行机制是怎样的?
最佳答案
  • 五星知识达人网友:西岸风
  • 2021-01-28 01:00
不是运行机制引起的,而是cout输出的缓存机制引起主线程输出两次。

所以你把主线程的cout<<也用WaitForSingleObject(hMutex,INFINITE);和ReleaseMutex(hMutex);抱起来应该就不会输出两次了。
全部回答
  • 1楼网友:平生事
  • 2021-01-28 02:36
搜一下:c++多线程中主线程运行机制
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯