samephore()信号量跨线程通信

 

samephore1:

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

char name[100] = "haihualovefang";

void main()
{
    HANDLE hsem = CreateSemaphoreA(NULL, 0, 1, name);
    printf("创建成功");
    char ch = getch();

    //ReleaseMutex(mutex);//

    ReleaseSemaphore(hsem, 1, NULL);
    printf("触发信号量");
    CloseHandle(hsem);


}

 

samephore2:

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

char name[100] = "haihualovefang";

void main()
{

    HANDLE hsem = OpenSemaphoreA(SEMAPHORE_ALL_ACCESS, TRUE, name);;
    if (hsem == NULL)
    {
        printf("打开失败");
        system("pause");
        return;
    }
    printf("等待-------");
    DWORD res = WaitForSingleObject(hsem, 20000);
    switch (res)
    {
    case WAIT_OBJECT_0:
        printf("收到信号-------");
        break;
    case WAIT_TIMEOUT:
        printf("超时没有收到-------");
        break;
    case WAIT_ABANDONED:
        printf("另外一个进程意外终止-------");
        break;
    default:
        break;

    }
    CloseHandle(hsem);



    system("pause");
}

 

posted @ 2016-08-21 09:56  芬乐  阅读(507)  评论(0编辑  收藏  举报