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...