使用共享内存作为进程互斥锁的代码

简介: 使用共享内存作为进程互斥锁的代码

线程互斥好办,来个锁就可以了。那么进程怎么办?使用共享内存。代码如下:


pthread_mutex_t* init_shm_mutex(const key_t mutex_key)
{
    int shmid = shmget(mutex_key, sizeof(pthread_mutex_t), 0666 | IPC_CREAT);
    if (shmid == -1)
    {
        return NULL;
    }
    void* shm_addr = shmat(shmid, NULL, 0);
    if (shm_addr == (void *) -1)
    {
        return NULL;
    }
    pthread_mutexattr_t mutex_attr;
    pthread_mutexattr_init(      &mutex_attr);
    pthread_mutexattr_setpshared(&mutex_attr, PTHREAD_PROCESS_SHARED);
    pthread_mutexattr_setrobust( &mutex_attr, PTHREAD_MUTEX_ROBUST);
    pthread_mutex_t* shm_mutex = (pthread_mutex_t *)shm_addr;
    pthread_mutex_init(shm_mutex,&mutex_attr);
    return shm_mutex;
}


 使用时:


#define PROCESS_MUTEX_KEY 20181217
//process
pthread_mutex_t* g_ProcessMutex = NULL
void write_data_to_shared_memory(const uchar* data)
{
    if (g_ProcessMutex == NULL)
    {
        g_ProcessMutex = init_shm_mutex(PROCESS_MUTEX_KEY);
    }
    pthread_mutex_lock(g_ProcessMutex);
    //do something
    pthread_mutex_unlock(g_ProcessMutex);
}

  进程方面的调用,这里就不讨论了。  

目录
相关文章
|
27天前
|
移动开发 Linux
Linux下如何查看哪些进程占用的CPU内存资源最多
Linux下如何查看哪些进程占用的CPU内存资源最多
|
2月前
|
IDE Linux 开发工具
内存泄漏检测工具Valgrind:C++代码问题检测的利器(一)
内存泄漏检测工具Valgrind:C++代码问题检测的利器
95 0
|
2月前
|
安全 Linux 开发者
⭐⭐⭐⭐⭐Linux C/C++ 进程崩溃诊断以及有效数据收集:解锁代码问题快速定位与修复的方法
⭐⭐⭐⭐⭐Linux C/C++ 进程崩溃诊断以及有效数据收集:解锁代码问题快速定位与修复的方法
85 1
|
3天前
|
存储 开发者 Python
优化Python代码中的内存占用:实用技巧与最佳实践
本文将介绍如何优化Python代码中的内存占用,通过实用技巧和最佳实践,有效减少内存消耗,提升代码性能和可扩展性。
|
7天前
|
消息中间件 Linux
【linux进程间通信(二)】共享内存详解以及进程互斥概念
【linux进程间通信(二)】共享内存详解以及进程互斥概念
|
2月前
|
存储 Linux 程序员
【Linux C/C++ 堆内存分布】深入理解Linux进程的堆空间管理
【Linux C/C++ 堆内存分布】深入理解Linux进程的堆空间管理
82 0
|
2月前
|
缓存 测试技术 开发工具
内存泄漏检测工具Valgrind:C++代码问题检测的利器(二)
内存泄漏检测工具Valgrind:C++代码问题检测的利器
35 0
|
2月前
|
消息中间件 并行计算 网络协议
探秘高效Linux C/C++项目架构:让进程、线程和通信方式助力你的代码飞跃
探秘高效Linux C/C++项目架构:让进程、线程和通信方式助力你的代码飞跃
36 0
|
2月前
|
消息中间件 Linux
Linux进程间通信(IPC)教程 Linux共享内存介绍:介绍POSIX共享内存的基本概念、用途和编程实践
Linux进程间通信(IPC)教程 Linux共享内存介绍:介绍POSIX共享内存的基本概念、用途和编程实践
25 2
|
2月前
|
数据采集 调度 计算机视觉
3段代码详解python中的单线程、多线程和多进程
3段代码详解python中的单线程、多线程和多进程
25 0