青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-167  評論-8  文章-0  trackbacks-0

鎖類屬包含的類包裝簡單的鎖定機制,比如互斥體、信號量、讀/寫互斥體和令牌等。這里我就以互斥體為例簡單的介紹一下其使用方法,對其它的鎖類進行一些簡單的說明。

1.互斥體的使用。

互斥體用于保護共享的易變代碼,也就是全局或靜態數據。這樣的數據必須通過互斥體進行保護,以防止它們在多個線程同時訪問時損壞。

在ACE中可以通過ACE_Thread_Mutex實現線程的訪問互斥,下面的例子演示ACE_Thread_Mutex類的使用。

#include "ace/Thread.h" 
#include 
"ace/Synch.h" 

#include 
<iostream>
using namespace std;


ACE_Thread_Mutex mutex;

void* Thread1(void *arg) 
{
    mutex.acquire();
    ACE_OS::sleep(
3);
    cout
<<endl<<"hello thread1"<<endl;
    mutex.release();

    
return NULL; 
}
 

void* Thread2(void *arg) 
{
    mutex.acquire();
    cout
<<endl<<"hello thread2"<<endl;
    mutex.release();

    
return NULL; 
}
 

int main(int argc, char *argv[]) 

    ACE_Thread::spawn((ACE_THR_FUNC)Thread1);
    
    
//Thread2 比Thread1晚創建1秒鐘,故后嘗試獲取互斥體
    ACE_OS::sleep(1);
    ACE_Thread::spawn((ACE_THR_FUNC)Thread2);
    
    
while(true)
        ACE_OS::sleep(
10);

    
return 0
}
 

ACE_Thread_Mutex主要有兩個方法:

  1. acquire():用來獲取互斥體,如果無法獲取,將阻塞至獲取到為止。
  2. release():用來釋放互斥體,從而使自己或者其它線程能夠獲取互斥體。

當線程要訪問共享資源時,首先調用acquire()方法獲取互斥體,從而獲取對改互斥體所保護的共享資源的唯一訪問權限,訪問結束時調用釋放互斥體,使得其它線程能獲取共享資源的訪問權限。

在此例中,本來Thread2的打印消息在Thread1之前,但由于Thread1先獲得互斥體,故Thread2只有待Thread1結束后才能進入臨界區。讀者朋友們可以通過將ACE_Thread_Mutex替換為ACE_NULL_Mutex看一下不加鎖的執行結果。

2.ACE Lock類屬簡介。

ACE Lock類屬列表如下:

名字

描述

ACE_Mutex

封裝互斥機制(根據平臺,可以是mutex_t、pthread_mutex_t等等)的包裝類,用于提供簡單而有效的機制來使對共享資源的訪問序列化。它與二元信號量(binary semaphore)的功能相類似。可被用于線程和進程間的互斥。

ACE_Thread_Mutex

可用于替換ACE_Mutex,專用于線程同步。

ACE_Process_Mutex

可用于替換ACE_Mutex,專用于進程同步。

ACE_NULL_Mutex

提供了ACE_Mutex接口的"無為"(do-nothing)實現,可在不需要同步時用作替換。

ACE_RW_Mutex

封裝讀者/作者鎖的包裝類。它們是分別為讀和寫進行獲取的鎖,在沒有作者在寫的時候,多個讀者可以同時進行讀取。

ACE_RW_Thread_Mutex

可用于替換ACE_RW_Mutex,專用于線程同步。

ACE_RW_Process_Mutex

可用于替換ACE_RW_Mutex,專用于進程同步。

ACE_Semaphore

這些類實現計數信號量,在有固定數量的線程可以同時訪問一個資源時很有用。在OS不提供這種同步機制的情況下,可通過互斥體來進行模擬。

ACE_Thread_Semaphore

應被用于替換ACE_Semaphore,專用于線程同步。

ACE_Process_Semaphore

應被用于替換ACE_Semaphore,專用于進程同步。

ACE_Token

提供"遞歸互斥體"(recursive mutex),也就是,當前持有某令牌的線程可以多次重新獲取它,而不會阻塞。而且,當令牌被釋放時,它確保下一個正阻塞并等待此令牌的線程就是下一個被放行的線程。

ACE_Null_Token

令牌接口的"無為"(do-nothing)實現,在你知道不會出現多個線程時使用。

ACE_Lock

定義鎖定接口的接口類。一個純虛類,如果使用的話,必須承受虛函數調用開銷。

ACE_Lock_Adapter

基于模板的適配器,允許將前面提到的任意一種鎖定機制適配到ACE_Lock接口。

可以簡單的分為以下幾類:

  1. 互斥鎖
    互斥鎖(通常稱為"互斥體"或"二元信號量")用于保護多線程控制并發訪問的共享資源的完整性?;コ怏w通過定義臨界區來序列化多線程控制的執行,在臨界區中每一時刻只有一個線程在執行它的代碼。互斥體簡單而高效(時間和空間)。
    ACE線程庫提供了Mutex式的類(是一組互斥體對象,擁有類似的接口),他是一種簡單而高效的類型是"非遞歸"互斥體。非遞歸互斥體不允許當前擁有互斥體的線程在釋放它之前重新獲取它。否則,將會立即發生死鎖。遞歸互斥體在ACE Recursive_Thread_Mutex類中可移植地實現。
  2. 讀者/作者鎖
    讀者/作者鎖與互斥體相類似。例如,獲取讀者/作者鎖的線程也必須釋放它。多個線程可同時獲取一個讀者/作者鎖用于讀,但只有一個線程可以獲取該鎖用于寫。當互斥體保護的資源用于讀遠比用于寫要頻繁時,讀者/作者互斥體有助于改善并發的執行。
    ACE線程庫提供了一個叫作RW_Mutex的類,在C++封裝類中可移植地實現了讀者/作者鎖的語義。讀者/作者鎖將優先選擇權給作者。因而,如果有多個讀者和一個作者在鎖上等待,作者將會首先獲取它。

計數信號量
在概念上,計數信號量是可以原子地增減的整數。如果線程試圖減少一個值為零的信號量的值,它就會阻塞,直到另一個線程增加該信號量的值。
計數信號量用于追蹤共享程序狀態的變化。它們記錄某種特定事件的發生。因為信號量維護狀態,它們允許線程根據該狀態來作決定,即使事件是發生在過去。
信號量比互斥體效率要低,但是,它們要更為通用,因為它們無需被最初獲取它們的同一線程獲取和釋放。這使得它們能夠用于異步的執行上下文中(比如信號處理器)。ACE線程庫提供一個叫作Semaphore的類來可移植地在C++包裝類中實現信號量語義。

posted on 2010-05-14 10:03 老馬驛站 閱讀(1125) 評論(0)  編輯 收藏 引用 所屬分類: ACE
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            免费视频亚洲| 亚洲国产婷婷| 久久精品成人欧美大片古装| 99riav久久精品riav| 日韩天堂av| 亚洲欧美日韩国产一区| 久久成人精品无人区| 久久午夜精品| 欧美极品影院| 国产目拍亚洲精品99久久精品| 久久人91精品久久久久久不卡| 在线观看欧美| 亚洲精品免费网站| 亚洲欧美日韩天堂| 老司机免费视频一区二区| 欧美高清视频在线观看| 亚洲网站啪啪| 久久精品99国产精品酒店日本| 美女91精品| 国产有码在线一区二区视频| 一区二区三区四区蜜桃| 欧美777四色影视在线| 亚洲一区二区三区视频播放| 久久久久久综合| 国产视频亚洲精品| 亚洲在线免费视频| 日韩午夜在线视频| 欧美激情aⅴ一区二区三区| 国产亚洲精品久久久久动| 亚洲午夜精品17c| 亚洲国产成人久久综合一区| 亚洲精品视频一区二区三区| 欧美日韩国产一区二区| 亚洲每日更新| 亚洲视频免费| 国产伦精品一区二区三区| 性高湖久久久久久久久| 在线视频亚洲欧美| 国产精品日韩欧美大师| 欧美在线网站| 亚洲欧美另类中文字幕| 国产精品www色诱视频| 亚洲视频一区二区免费在线观看| 亚洲九九精品| 国产欧美日韩三区| 国产情侣一区| 久久精品一区蜜桃臀影院 | 欧美日韩免费在线| 中国av一区| 欧美一区二区三区日韩视频| 亚洲久久在线| 欧美亚洲一区二区在线| 亚洲欧洲精品天堂一级| 亚洲狠狠婷婷| 国产精品尤物| 欧美激情免费观看| 国产午夜一区二区三区| 亚洲国产精品va在线观看黑人| 欧美午夜电影一区| 久久午夜激情| 国产精品萝li| 一区二区欧美精品| 亚洲激情成人| 欧美精品久久99| 亚洲一本大道在线| 欧美日韩国产综合网 | 亚洲高清成人| 蜜桃av一区二区三区| 国产精品v日韩精品| 欧美成人精品在线| 国产一区二区三区成人欧美日韩在线观看 | 日韩天堂在线观看| 99视频有精品| 欧美日韩一区在线观看| 日韩午夜精品| 亚洲欧美另类综合偷拍| 国产精品久久久久久久电影| 亚洲精品一区在线| 亚洲男人影院| 国产日韩欧美制服另类| 亚洲欧美日韩专区| 欧美r片在线| 亚洲精品一区二区三区蜜桃久| 欧美成人亚洲成人| 日韩午夜电影av| 两个人的视频www国产精品| 亚洲老板91色精品久久| 国产精品区二区三区日本 | 亚洲国产成人av在线| av成人激情| 国产日韩欧美自拍| 欧美国产亚洲精品久久久8v| 亚洲一区美女视频在线观看免费| 久热精品视频| 欧美在线日韩精品| 一本色道久久综合亚洲精品按摩| 国产精品视频yy9299一区| 嫩草影视亚洲| 欧美有码视频| 99综合精品| 亚洲欧洲精品一区二区三区| 久久精品国产精品亚洲综合| 中国女人久久久| 日韩视频精品在线观看| 激情综合色丁香一区二区| 亚洲午夜羞羞片| 亚洲精品国产视频| 欧美高清成人| 亚洲黄色av| 亚洲毛片网站| 亚洲免费高清| 亚洲一级一区| 亚洲香蕉成视频在线观看 | 亚洲第一区在线| 免费成人av在线| 欧美国产一区二区在线观看| 另类av一区二区| 亚洲国产精品va在看黑人| 亚洲精品欧美日韩专区| 一本一本大道香蕉久在线精品| 一区二区av在线| 午夜欧美大片免费观看| 久久精品国产精品亚洲| 欧美v日韩v国产v| 欧美性大战xxxxx久久久| 国产免费亚洲高清| 亚洲精品美女久久7777777| 午夜免费久久久久| 欧美激情第8页| 国产午夜精品麻豆| 一本色道婷婷久久欧美| 亚洲综合久久久久| 欧美午夜久久| 亚洲国产精品精华液网站| 欧美一区二区在线视频| 亚洲人成免费| 久久天堂av综合合色| 国产精品久久久久久久app| 激情久久久久| 女女同性精品视频| 在线视频欧美日韩精品| 欧美色图麻豆| 亚洲一区二区三区激情| 亚洲特级毛片| 国产精品一国产精品k频道56| 久久精品中文| 影音先锋另类| 亚洲国产一区二区三区青草影视 | 亚洲欧洲日产国码二区| 免费在线看一区| 亚洲综合第一页| 亚洲国产综合在线| 久久久国产一区二区三区| 免费久久99精品国产自| 牛牛影视久久网| 亚洲性视频网站| 欧美不卡在线视频| 国内精品**久久毛片app| 亚洲国产精品一区二区三区| 亚洲一区二区在线视频 | 在线日韩中文字幕| 国产亚洲一区在线播放| 国产精品久久久久久久久借妻| 欧美人与性动交α欧美精品济南到| 久久av一区| 久久精品国产亚洲aⅴ| 亚洲丰满少妇videoshd| 亚洲国产欧美一区二区三区同亚洲 | 暖暖成人免费视频| 国产精品伦一区| 欧美激情视频一区二区三区免费 | 亚洲日韩欧美一区二区在线| 一区二区三区.www| 99在线精品免费视频九九视| 亚洲精选一区| 欧美一区二区三区免费视频| 欧美精品亚洲二区| 国产精品国产三级国产专区53| 欧美成人按摩| 亚洲精选成人| 欧美激情久久久| 亚洲国产另类 国产精品国产免费| 亚洲视频在线观看视频| 久久亚洲免费| 亚洲高清网站| 久久高清一区| 欧美一区激情视频在线观看| 亚洲激情第一区| 欧美α欧美αv大片| 欧美成人免费网站| 99人久久精品视频最新地址| 欧美美女喷水视频| 亚洲天堂av综合网| 国产无一区二区| 中文成人激情娱乐网| 久久国产精品一区二区| 欧美成人a视频| 欧美一级大片在线免费观看| 亚洲激情视频| 亚洲精品视频在线播放|