共享内存的处理

对于共享内存,在业务上可以进行适当的安排,来进行解决,在代码级别一般都用临界区和互斥量

对于临界区,它是解决线程间的共享内存的,不能垮进程

对于互斥量,可以是线程间的,也可以是进程间的,进程间是利用系统内核对象的,该内核对象是可以有名字,利用该名字可以达到安全的共享内存

在线程之间,临界区消耗的时间大概是互斥量的十分之一,所以,在线程中尽量使用临界区


临界区的使用

先定义临界区变量    CRITICAL_SECTION  m_criticl;

用之前初始化临界区InitializeCriticalSection(&m_criticl);

对要保护的代码的开始加 EnterCriticalSection(&m_criticl);

结尾的时候要释放LeaveCriticalSection(&m_criticl);

当不再用,就是析构的时候,删除DeleteCriticalSection(&m_criticl);


互斥量的使用

创建互斥量, 第三个参数不为空,则可以用于进程间的互斥

HANDLE WINAPI CreateMutex( 
__in LPSECURITY_ATTRIBUTES lpMutexAttributes, 
__in BOOL bInitialOwner, 
__in LPCTSTR lpName );

在保护的代码上加 WaitForSingleObject

用完后,释放 ReleaseMutex

最后不用的话,要关掉互斥量的句柄CloseHandle, 因为系统的句柄是有限的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值