回 帖 发 新 帖 刷新版面

主题:多线程

#include <stdio.h>
#include <windows.h>
#include <process.h>

HANDLE lock;

UINT  __stdcall  run(void *)
{
WaitForSingleObject(lock, INFINITE);
printf("run\n");
ReleaseMutex(lock); return 0;
}


int main()
{
HANDLE a;
lock=CreateMutex(NULL,false,NULL);//创建一个锁!

a=(HANDLE)_beginthreadex(NULL,0,&run,NULL,0,0);//进入run

WaitForSingleObject(lock, INFINITE);  
printf("main!\n"); 

ReleaseMutex(lock); 

WaitForSingleObject(a, INFINITE); //等待run线程的返回

CloseHandle(lock);

CloseHandle(a);

return 0;
}
//-----------
结果是什么,大家分析一下,和I/O模块(printf()的执行)有没有关系? 多谢了

回复列表 (共1个回复)

沙发

#include <stdio.h>
#include <windows.h>
#include <process.h>

HANDLE lock;

UINT  __stdcall  run(void *)
{
WaitForSingleObject(lock, INFINITE); 
printf("run\n");
ReleaseMutex(lock); return 0;
}


int main()
{
HANDLE a;
lock=CreateMutex(NULL,false,NULL);//创建一个锁!

a=(HANDLE)_beginthreadex(NULL,0,&run,NULL,0,0);//进入run

WaitForSingleObject(lock, INFINITE);  
printf("main!\n"); 

ReleaseMutex(lock); 

WaitForSingleObject(a, INFINITE); //等待run线程的返回

CloseHandle(lock);

CloseHandle(a);

return 0;
}

编译的时候加/MT ...

结果是main
      run....

如果在a=(HANDLE)_beginthreadex(NULL,0,&run,NULL,0,0);//进入run
前加句Sleep(100);结果就是run
                         main

I/O模块(printf()的执行)有没有关系?---->这句什么意思楼主问的莫名其妙....

我来回复

您尚未登录,请登录后再回复。点此登录或注册