共享内存的处理

来源:互联网 发布:淘宝网电脑版下载安装 编辑:程序博客网 时间:2024/05/22 09:43

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

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

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

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


临界区的使用

先定义临界区变量    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, 因为系统的句柄是有限的

0 0