在网上找了一个mutex的例子,结果看起不明显。
修改了下让运行结果看起来更直观,代码如下:
#include <stdio.h>
#include <windows.h>
#define MUTEX_NAME "SJL06"
#define MUTEX_WAIT_CYCLE 10000l
main()
{
int i;
int numdata;
int timedata;
unsigned long dwWaitResult;
printf("Please input a number:");
scanf("%d",&numdata);
printf("Please set the time alternation:");
scanf("%d",&timedata);
for(i=0;i<1000;i++)
{
HANDLE m_hMutex = CreateMutex(NULL, FALSE, MUTEX_NAME);
dwWaitResult = WaitForSingleObject(m_hMutex, MUTEX_WAIT_CYCLE);
switch(dwWaitResult)
{
case WAIT_OBJECT_0:
printf("%d-%d\n",numdata,i);
break;
case WAIT_TIMEOUT:
printf("ERROR:Time out...\n");
break;
case WAIT_ABANDONED:
printf("ERROR: Abandoned...\n");
break;
default:
printf("ERROR!");
break;
}
Sleep(timedata);//更改之此位
CloseHandle(m_hMutex);
m_hMutex = NULL;//原来Sleep(timedata);此后面
}
system("pause");
}
1. 同时运行两个
2. 可明显看到有一个程序在等待