首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

多线程的有关问题,同时创建主函数肯定比其它线程抢先吗

2013-02-03 
多线程的问题,同时创建主函数肯定比其它线程抢先吗?#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所在的线程是主线程,如果没有创建线程,一个进程就只有一个线程那就是主线程。

热点排行
Bad Request.