基础能力-加解锁

 2023-09-05 阅读 343 评论 0

摘要:关于加解锁的两种实现方式 方案一:使用C++11 atomic_flag原子特性实现细粒度加解锁 #ifndef YAGER_MUTEX_H #define YAGER_MUTEX_H#include <atomic>class CYagerMutex { public:CYagerMutex(): m_atomicFlag(ATOMIC_FLAG_INIT){}~CYagerMutex(){}void

关于加解锁的两种实现方式

方案一:使用C++11 atomic_flag原子特性实现细粒度加解锁
#ifndef YAGER_MUTEX_H
#define YAGER_MUTEX_H#include <atomic>class CYagerMutex
{
public:CYagerMutex(): m_atomicFlag(ATOMIC_FLAG_INIT){}~CYagerMutex(){}void Lock(){while (m_atomicFlag.test_and_set());}void UnLock(){m_atomicFlag.clear();}private:std::atomic_flag  m_atomicFlag;};
#endif //YAGER_MUTEX_H
方案二:使用libuv的mutex,实现粗粒度的加解锁
#include "libuv/include/uv.h"class CYagerMutex
{
public:CYagerMutex(){uv_mutex_init(&m_mutex);}~CYagerMutex(){uv_mutex_destroy(&m_mutex);}void Lock(){uv_mutex_lock(&m_mutex);}void UnLock(){uv_mutex_unlock(&m_mutex);}private:uv_mutex_t	m_mutex;};

关于加解锁的两种实现方式

方案一:使用C++11 atomic_flag原子特性实现细粒度加解锁
#ifndef YAGER_MUTEX_H
#define YAGER_MUTEX_H#include <atomic>class CYagerMutex
{
public:CYagerMutex(): m_atomicFlag(ATOMIC_FLAG_INIT){}~CYagerMutex(){}void Lock(){while (m_atomicFlag.test_and_set());}void UnLock(){m_atomicFlag.clear();}private:std::atomic_flag  m_atomicFlag;};
#endif //YAGER_MUTEX_H
方案二:使用libuv的mutex,实现粗粒度的加解锁
#include "libuv/include/uv.h"class CYagerMutex
{
public:CYagerMutex(){uv_mutex_init(&m_mutex);}~CYagerMutex(){uv_mutex_destroy(&m_mutex);}void Lock(){uv_mutex_lock(&m_mutex);}void UnLock(){uv_mutex_unlock(&m_mutex);}private:uv_mutex_t	m_mutex;};

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/634.html

上一篇:6.9冲刺
下一篇:JSP的文件上传

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息