博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ACE Lock类介绍
阅读量:3696 次
发布时间:2019-05-21

本文共 835 字,大约阅读时间需要 2 分钟。

锁类属包含的类包装简单的锁定机制,比如互斥体、信号量、读/写互斥体和令牌等。这里我就以互斥体为例简单的介绍一下其使用方法,对其它的锁类进行一些简单的说明。

1.互斥体的使用。

互斥体用于保护共享的易变代码也就是全局或静态数据。这样的数据必须通过互斥体进行保护,以防止它们在多个线程同时访问时损坏。

在ACE中可以通过ACE_Thread_Mutex实现线程的访问互斥,下面的例子演示ACE_Thread_Mutex类的使用。

#include "ace/Thread.h" #include "ace/Synch.h" #include 
using namespace std;ACE_Thread_Mutex mutex;static int number=1;void* Thread1(void *arg) { mutex.acquire(); ACE_OS::sleep(3); cout<
<<"hello thread1"<
<

在使用类属时一定注意锁的获取以及释放,

ACE_Thread_Mutex主要有两个方法:

  1. acquire():用来获取互斥体,如果无法获取,将阻塞至获取到为止。
  2. release():用来释放互斥体,从而使自己或者其它线程能够获取互斥体。

当线程要访问共享资源时,首先调用acquire()方法获取互斥体,从而获取对改互斥体所保护的共享资源的唯一访问权限,访问结束时调用释放互斥体,使得其它线程能获取共享资源的访问权限。

在此例中,本来Thread2的打印消息在Thread1之前,但由于Thread1先获得互斥体,故Thread2只有待Thread1结束后才能进入临界区。读者朋友们可以通过将ACE_Thread_Mutex替换为ACE_NULL_Mutex看一下不加锁的执行结果。如果不加锁的话容易产生脏数据,出现数据相同的问题

转载地址:http://uwucn.baihongyu.com/

你可能感兴趣的文章
最终排名
查看>>
小鑫の日常系列故事(十)——排名次
查看>>
老--质价比
查看>>
选夫婿1
查看>>
共用体练习
查看>>
数据结构实验之链表一:顺序建立链表
查看>>
数据结构实验之链表二:逆序建立链表
查看>>
数据结构实验之链表三:链表的逆置
查看>>
数据结构实验之链表四:有序链表的归并
查看>>
数据结构实验之链表七:单链表中重复元素的删除
查看>>
师--链表的结点插入
查看>>
数据结构实验之链表五:单链表的拆分
查看>>
不敢死队问题
查看>>
约瑟夫问题
查看>>
三国佚事——巴蜀之危
查看>>
养兔子
查看>>
C语言实验——拍皮球
查看>>
母牛的故事
查看>>
蟠桃记
查看>>
考新郎
查看>>