跨平台中对于 互斥量(mutex) 的包装

这篇博客介绍了如何在跨平台环境下,包括Linux、Windows(VC/GCC/MingW),实现互斥量(mutex)的封装。内容涵盖使用平台特定的API或pthread库创建互斥量,并提供了lock、trylock、timedlock和unlock等基本操作。同时,针对Windows/MingW环境下缺少clock_gettime函数的问题,文中提出了解决方案以支持timedlock功能。
摘要由CSDN通过智能技术生成

以下代码在跨平台环境下包装了互斥量(mutex),支持以下平台 linux/windows,vc/gcc/mingw

/**
 * @file -
 * @author jingqi
 * @date 2010-7-9
 */

#ifndef ___HEADFILE___814FCD2E_2F65_4787_93E5_ECDE19588938_
#define ___HEADFILE___814FCD2E_2F65_4787_93E5_ECDE19588938_

#include <assert.h>
#include <nut/platform/platform.hpp>

#if defined(NUT_PLATFORM_OS_WINDOWS)
#  include <windows.h>
#endif

#if !defined(NUT_PLATFORM_OS_WINDOWS) || defined(NUT_PLATFORM_CC_MINGW)
#  include <pthread.h>
#endif

namespace nut
{

class Mutex
{
#if defined(NUT_PLATFORM_OS_WINDOWS) && !defined(NUT_PLATFORM_CC_MINGW)
    HANDLE m_hmutex;
#else
    pthread_mutex_t m_mutex;
#endif

public :
    Mutex ()
    {
#if defined(NUT_PLATFORM_OS_WINDOWS) && !defined(NUT_PLATFORM_CC_MINGW)
        m_hmutex = ::CreateMutex(NULL, FALSE, NULL);
#else
        ::pthread_mutexattr_t attr;
        ::pthread_mutexattr_init(&attr);
        :
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值