我的KT庫之 物件池

2021-09-08 01:55:47 字數 2585 閱讀 1120

了解或者認識kt:

在專案中如何使用kt?

kt是乙個庫,所以將kt的dll檔案引用到您的專案上即可使用kt裡的函式功能。

本節將介紹大家認識kt庫里的物件池和如何使用它們。kt裡的物件池物件都存放在「kt.core.objectpool「下,當你已在你的專案裡引用了kt庫後,則寫下以下**就可以使用到kt裡的所有物件池了。

using kt.core.objectpool;
先了解一下物件池物件池,顧名思義就是用於儲存物件的池(汗-_-!!),在它的生命週期內維護著它裡面的所有物件,確保在同乙個生命週期內物件池裡的資料的唯一性。當物件池被銷毀時,它裡面的所有物件也將跟著銷毀。

它的介面定義:

/// /// 

物件池介面

///

public inte***ce

iobjectpool : idisposable

/// ///

清空物件池

///

void clear();

}

目前在kt裡實現了此介面的共有兩個物件,如下:

其中dictionaryobjectpool是採用hashtable實現的物件池,用於向其它物件池提供基礎服務。objectpoolbase則是乙個抽象類,是其它物件池的基類。

物件池的種類

根據生命週期的不同,可分為不同種類的物件池,kt目前共有以下幾種:

: 基於asp.net 應用程式的物件池

對於同乙個asp.net應用程式(同乙個web站點程式)來說,物件池裡的資料都是共用的,使用示例:

//通過擴充套件方法獲取資料

b、websessionobjectpool: 基於asp.net session會話期的物件池

對於同乙個session會話來說,物件池裡的資料都是共用的,使用示例:

websessionobjectpool.instance.add("資料", "資料值");

var value1 = websessionobjectpool.instance.get("資料").as();

//通過擴充套件方法獲取資料

var value2 = websessionobjectpool.instance.getoradd("資料1", () => "資料值1");

注意:如果需要在session失效時自動**資料,請在global.asax裡的session_end事件裡加上****,如下示例:

protected void session_end(object sender, eventargs e)

c、webrequestobjectpool: 基於asp.net request請求上下文的物件池

對於同乙個http web request會話來說,物件池裡的資料都是共用的,使用示例:

.instance.add("資料", "資料值");

var value1 = .instance.get("資料").as();

//通過擴充套件方法獲取資料

var value2 = .instance.getoradd("資料1", () => "資料值1");

注意:如果需要在http request完成時自動**資料,請在web.config裡註冊webrequestobjectpoolmodule,如下示例:

d、threadcallobjectpool對於同乙個執行緒來說,物件池裡的資料是共用的。使用示例:

public class 

program

, k=", thread.currentthread.name, name);

thread.sleep(10);

console.writeline("thread: , k=", thread.currentthread.name, threadcallobjectpool.instance.get("k"));

});th.name = i.tostring();

th.start();

}console.read();}}

使用物件池上下文/// ///

商家模組

///

public

imerchantsmodule merchantsmodule

); }

}

物件池及資料庫連線物件池

objectpool類 物件池 using system using system.collections.generic using system.text using system.timers using system.collections namespace objectpool 建立乙個...

Unity 物件池之SubPool

首先明確物件池中的一些元素 1,預設 2,集合 3,名字標識 4構造 using system using system.collections.generic using unityengine using system.text public class subpool 構造 public su...

我的執行緒池

參考別人的文章寫的一篇c 11執行緒池建立和排程 include include include include include using namespace std class threadpool class task 執行任務的函式,可以寫成乙個基類,所有的需要加入執行緒池的任務都可以繼承該...