linux共享内存内加锁导致死锁
背景: 使用共享内存共享一段结构体数据,结构体中包含锁变量,对内部数据操作时,需要加锁。通常 操作中没有问题,但在共享内存数据进行高频率加锁时出现死锁。
使用共享内存共享如下结构体数据
typedef struct
{
OSMutex muOnProcess;
}MEM_MANAGER_MEM_CTRL;
在对数据进行操作时,对共享数据进行锁操作
LockMutex(&pCtrl->muOnProcess);
UnlockMutex(&pCtrl->muOnProcess);
结果:在多进程操作时,某个进程死锁,永远获取不到锁
解决:使用有名信号量,每个进程均通过KEY获取信号量,在内存中进行信号量操作
#include
#include "os-sem.h"
/**************************************************
共有 0 条评论