基础能力-加解锁

简介: 关于加解锁的两种实现方式方案一:使用C++11 atomic_flag原子特性实现细粒度加解锁#ifndef YAGER_MUTEX_H#define YAGER_MUTEX_H#include class CYagerMute...

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

方案一:使用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;

};
目录
相关文章
|
9月前
|
存储 数据采集 分布式计算
大规模数据处理:解锁现代技术与商业的无限潜能
在当今信息爆炸的时代,大规模数据处理成为了推动技术和商业创新的关键。本文将探讨大规模数据处理的意义和应用,并介绍其对现代社会带来的深远影响。
58 1
|
24天前
|
数据可视化 数据挖掘
知识共享:解锁企业创新潜力的关键
本文探讨了在信息爆炸时代构建高效知识共享机制的重要性及方法。知识共享不仅能提升团队协作效率和创新能力,还能降低重复劳动、促进知识积累。文章从文化驱动、技术支持和流程优化三个维度介绍了建立知识共享机制的关键要素,并推荐了创新工具如板栗看板,帮助团队通过模块化、可视化的方式优化知识管理流程,最终实现知识共享的无缝嵌入与高效应用。
55 15
|
1月前
|
存储 传感器 人工智能
《软硬协同优化,解锁鸿蒙系统AI应用性能新高度》
在数字化时代,鸿蒙系统与AI的融合备受关注。鸿蒙凭借微内核架构和分布式特性,支持语音助手、图像识别等AI应用,提升用户体验。为应对复杂AI需求,软硬件协同优化成为关键:软件方面通过算法、资源管理和框架优化挖掘潜力;硬件方面则通过芯片适配、传感器和存储优化提供动力。两者协同实现资源共享、任务调度和数据处理的突破,大幅提升性能,推动智能化体验迈向新高度。
|
6月前
|
存储 算法 大数据
解锁数据新势能:探索G-SCD on DeltaLake方案带来的革新
【8月更文挑战第26天】在数据驱动的商业环境下,G-SCD on DeltaLake方案凭借DeltaLake的开源存储技术,有效解决了传统数据处理方案在实时性、准确性及可靠性上的局限。该方案通过精确的增量处理减少整体数据扫描,利用版本控制确保数据变更的可追溯性,优化并发处理以提高数据一致性,采用高效的存储格式降低成本,并简化数据处理流程以降低维护难度,从而成为应对大数据挑战的理想选择,助力企业释放数据价值,促进业务增长。
41 1
|
7月前
|
缓存 测试技术 API
解锁开源模型高性能服务:SGLang Runtime 应用场景与实践
SGLang 是一个用于大型语言模型和视觉语言模型的推理框架。
|
6月前
|
前端开发 JavaScript API
解锁高效应用构建:Vuex与后端交互的前端状态同步策略,让数据流动如行云流水,紧跟前端开发的热点趋势
【8月更文挑战第27天】本文深入探讨了Vue框架下的前端状态管理库Vuex与后端服务交互时的状态同步策略。通过剖析Vuex的核心机制——状态(State)、变异(Mutation)、动作(Action)及模块(Module),文章展示了如何优雅地将后端数据加载并更新至前端状态中。特别地,借助示例代码解释了Action处理API调用、Mutation更新状态的过程,并介绍了如何通过模块化和命名空间提高状态管理的准确性和时效性。此外,还讨论了组件如何利用`mapState`和`mapActions`简化状态访问与操作的方法。遵循这些策略,开发者可以在构建复杂应用时显著提升性能与用户体验。
73 0
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
解锁智能未来的无限可能
【10月更文挑战第22天】解锁智能未来的无限可能
31 0
|
4月前
|
缓存 监控 算法
代码性能优化:解锁应用潜能的关键策略
【10月更文挑战第20天】代码性能优化:解锁应用潜能的关键策略
|
4月前
|
缓存 监控 数据库
性能优化:解锁应用与系统的极致速度
【10月更文挑战第20天】性能优化:解锁应用与系统的极致速度
65 0
|
5月前
|
传感器 物联网 5G
5G的三大主要特性:解锁未来无限可能
5G的三大主要特性:解锁未来无限可能
376 1