nowayings 发表于 2015-4-2 18:48:12

内核模式下的同步对象

内核模式下面的同步对象有信号灯、互斥体、事件。用户模式和内核模式基本差不多。现在列举用户模式的互斥体的使用方式:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <process.h>
#include <stddef.h>

UINT WINAPI Thead1(LPVOID para)
{
        HANDLE *phMutex = (HANDLE*)para;
        //得到互斥体
        WaitForSingleObject(phMutex,INFINITE);
        printf("Enter thead1\n");
        //Sleep(2000);
        printf("Leave thead1\n");

        ReleaseMutex(*phMutex);
        return 0;
}
UINT WINAPI Thead2(LPVOID para)
{
        HANDLE *phMutex = (HANDLE*)para;
        //得到互斥体
        WaitForSingleObject(phMutex,INFINITE);
        printf("Enter thead2\n");
        //Sleep(2000);
        printf("Leave thead2\n");

        ReleaseMutex(*phMutex);
        return 0;
}

int main()
{
        //创建一个同步事件
        HANDLE hMutex = CreateMutex(NULL,FALSE,NULL);

        //开启新线程,并且将同步的事件句柄传递给新县城
        HANDLE hThead1 = (HANDLE)_beginthreadex(NULL,0,Thead1,&hMutex,0,NULL);
        HANDLE hThead2 = (HANDLE)_beginthreadex(NULL,0,Thead2,&hMutex,0,NULL);

        Sleep(2000);
        return 0;
}


页: [1]
查看完整版本: 内核模式下的同步对象