mutex 例子

来源:互联网 发布:如何创建网络软件公司 编辑:程序博客网 时间:2024/05/23 15:39

在网上找了一个mutex的例子,结果看起不明显。

修改了下让运行结果看起来更直观,代码如下:

#include <stdio.h>#include <windows.h>#define MUTEX_NAME "SJL06" #define MUTEX_WAIT_CYCLE 10000lmain(){    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. 可明显看到有一个程序在等待

0 0