ACE 將鎖與介面卡用於動態繫結

2021-06-03 20:59:09 字數 1079 閱讀 7938

如果想動態改變**所使用的鎖型別,ace的ace_lock和ace_lock_adapter,可以用於執行時替換。

下面的例子根據程式的輸入選擇使用遞迴互斥體或者非遞迴互斥體。但是使用動態繫結的缺點是每次呼叫都需要負擔額外的經由虛函式表的間接層次。

#include

#include

#include "ace/lock_adapter_t.h"

#include "ace/thread.h"

#include "ace/synch.h"

#include "ace/log_msg.h"

struct args

ace_lock *_mutex;

int iterations;

};static void* worker(void* arguments)

return 0;

}int main(int argc,char* argv)

ace_lock *lock;

if(ace_os::strcmp(argv[3],"recursive"))

lock = new ace_lock_adapter;

else

lock = new ace_lock_adapter;

struct args args(lock,ace_os::atoi(argv[2]));

thread_num = ace_os::atoi(argv[1]);

ace_thread_t *thread_id = new ace_thread_t[thread_num+1];

ace_hthread_t *thread_handles = new ace_hthread_t[thread_num+1];

if(ace_thread::spawn_n(thread_id,thread_num,(ace_thr_func)worker,

&args,thr_joinable|thr_new_lwp,ace_default_thread_priority,

0,0,thread_handles)==-1)

for(int i=0;i

return 0;

介面卡與裝飾器模式

介面卡模式,就是把乙個類的介面變換成客戶端所能接受的另乙個介面,從而使兩個介面不匹配的兩個類能夠在一起工作。通常用於乙個專案需要引用一些開源框架來一起工作的情況下,這些開源框架都有一些關於環境資訊的介面,需要從外部傳入,但外部介面不一定能匹配,在這種請款下,就需要介面卡模式來轉換介面。介面卡模式的類...

Java與模式 介面卡模式

介面卡模式 這個模組要實現這個介面 public inte ce xmlreader 你的另乙個類b恰好有這個功能,但是b實現的是這個介面 public inte ce readerxml 這個時候我們的做法是寫個介面卡 public class adapter implements xmlread...

介面卡模式與外觀模式

客戶新的需求,需要我們實現類似歐洲插座 電流介面卡 美國產筆記本插頭的東西,如下所示 使用介面卡模式充滿良好的oo設計原則 使用物件組合,以修改的介面包裝被適配者 同時被適配者的任何子類,都可以配著介面卡使用。需要注意 該模式是如何把客戶和介面繫結,而不是和實現繫結。上圖是物件介面卡,物件介面卡利用...