多线程的问题,同时创建主函数肯定比其它线程抢先吗?#includeiostream#includewindows.husing namespac
多线程的问题,同时创建主函数肯定比其它线程抢先吗?
#include<iostream>
#include<windows.h>
using namespace std;
HANDLE hMutex;
DWORD TEMP=1000;
DWORD WINAPI Xfun(LPVOID LpParameter)
{
while(1)
{
WaitForSingleObject(hMutex,INFINITE); // 申请资源
cout<<"XFun display:"<<TEMP--<<endl;
Sleep(10000);
ReleaseMutex(hMutex); // 释放申请的资源
}
}
DWORD WINAPI Fun(LPVOID lpParameter) // 线程函数
{
HANDLE hThread = CreateThread(NULL,0,Xfun,NULL,0,NULL); // 创建一个线程
hMutex = CreateMutex(NULL,FALSE,"screen");
while(1)
{
WaitForSingleObject(hMutex,INFINITE); // 申请资源
cout<<"Fun display:"<<TEMP--<<endl;
Sleep(10000);
ReleaseMutex(hMutex); // 释放申请的资源
}
}
int main()
{
HANDLE hThread = CreateThread(NULL,0,Fun,NULL,0,NULL); // 创建一个线程
hMutex = CreateMutex(NULL,FALSE,"screen");//创建一个独占资源
CloseHandle(hThread);
while(1)
{
WaitForSingleObject(hMutex,INFINITE);
cout<<"main display:"<<TEMP--<<endl;
Sleep(2000);
ReleaseMutex(hMutex);
}
return 0;
}
试了很多次,每次都是主函数先运行。求解,多线程这块很菜,希望各位耐心解答,先谢谢各位啦,不胜感激。
[解决办法]
就是主线程先运行,main函数式程序的入口点,它先运行后再在其里面创建其他线程,然后会交替运行,由时间片决定。
[解决办法]
main函数是程序的入口,肯定是主线程先执行,这个毋庸置疑,LZ应该冷静的想下,线程之间的顺序可以通过sleep来控制,但只能控制起始的执行顺序,后面则有时间片进行控制
[解决办法]
呵呵,多线程基本还不牢靠啊,默认起来的进程时的main所在的线程是主线程,如果没有创建线程,一个进程就只有一个线程那就是主线程。
