⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mutex.h

📁 ReactOS是一些高手根据Windows XP的内核编写出的类XP。内核实现机理和API函数调用几乎相同。甚至可以兼容XP的程序。喜欢研究系统内核的人可以看一看。
💻 H
字号:
/*****************************************************************************

  Mutex

*****************************************************************************/


#ifndef MUTEX_H
#define MUTEX_H


#include "Unfrag.h"


class Mutex
{
public:
    Mutex ()
    {
    	// NT only code begin ... Win9x disregards this part
    	SECURITY_ATTRIBUTES MutexAttribs;

    	memset (&MutexAttribs, 0, sizeof (SECURITY_ATTRIBUTES));

    	MutexAttribs.bInheritHandle = false;
    	MutexAttribs.nLength = sizeof (SECURITY_ATTRIBUTES);
    	MutexAttribs.lpSecurityDescriptor = NULL;
    	// NT only code end

    	Locked      = false;
    	LockCount   = 0;
    	MutexHandle = CreateMutex (&MutexAttribs, Locked, NULL);

        return;
    }

    ~Mutex ()
    {
    	Lock ();
    	CloseHandle (MutexHandle);
    }

    void Lock (void)
    {
    	Locked = true;
    	WaitForSingleObject (MutexHandle, INFINITE);
    	LockCount += 1;
        return;
    }


    void Unlock   (void)
    {
	    LockCount -= 1;
	    if (LockCount <= 0)
	    {
		    LockCount = 0;
		    Locked = false;
    	}

    	ReleaseMutex (MutexHandle);
        return;
    }


    bool IsLocked (void)  
    { 
        return (Locked); 
    }

protected:
    uint32 LockCount;
    HANDLE MutexHandle;
    bool   Locked;
};


#endif // MUTEX_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -