Zeroc ICE 原始碼分析二 IceUtil

2021-06-20 19:26:42 字數 1368 閱讀 7777

ice提供了乙個跨平台的c++ middleware,包含在原始碼的include/iceutil中。iceutil中包含的主要類如下圖所示:

這些類主要提供了3類跨平台的基礎功能:

1. smartpoint / sharedptr 功能。 shared 中包含了__incref() 和 __decref()的方法。並且當 __decref中的引用計數為0時會delete this.

handle在constructor 和 destructor 中會呼叫shared 的 __incref() 和 __decref()方法。如下所示:

#include #include #include using namespace std;

using namespace iceutil;

class myshared : public shared

virtual ~myshared() };

handlegetmyshared()

void testmyshared()

int main()

2. 執行緒以及同步機制:ice提供了執行緒(thread),互斥鎖(mutex)和條件變數(cond)用於多執行緒的處理,如下示例所示:

#include #include #include using namespace std;

using namespace iceutil;

mutex mutex;

cond cond;

class mythread : public thread

};int main()

cout << "cond wait in function " << __function__ << endl;

thread->getthreadcontrol().join();

return 0;

}

3. monitor封裝了cond用於喚醒(所有)等待的執行緒,如下示例:

#include #include #include using namespace std;

using namespace iceutil;

monitormonitor;

class mythread : public thread

};int main()

// automaitcally call monitor.unlock()

thread->getthreadcontrol().join();

return 0;

}

二 LinkedList原始碼分析

二 linkedlist原始碼分析 上篇看了下arraylist原始碼,這篇記錄下linkedlist原始碼分析 linkedlist 繼承 abstractsequentiallist 提供了對元素順序訪問的抽象 linkedlist 實現 deque介面,底層構成雙向鍊錶結構 linkedlis...

Spring原始碼分析(二)

針對spring中bean初始化時擴充套件類執行順序進行分析 通過getbean逐層最終到bean例項化前後呼叫的方法,主要是aware介面 beanpostprocessor initializingbean init method的呼叫順序 abstractbeanfactory dogetbe...

Jquery原始碼分析 二)

prk 2008 08 12 型別 說明 dom element 第乙個引數為dom元素,第二個引數不用。直接把dom元素存在新生成的jquery物件的集合中。返回這個jquery物件。構建jquery物件完成。string 第乙個引數為string有三種情況 1 html的標籤字串,html ar...