1.指定狀態物件
static void main(string args)
static void go(object state)
2.taskcreationoptions
可以調整任務的執行方式。
longrunning:通知排程器為任務指定乙個執行緒
prefe***irness:會使任務排程器的排程順序盡可能和任務的開始順序一致
attachedtoparent:建立子任務
3.子任務
當乙個任務啟動另外乙個任務時,可以確定父子任務關係
父任務必須在所有子任務結束了之後才結束。而父任務結束時,子任務中的異常才向上丟擲
var task = task.factory.startnew(()=>
,taskcreationoptions.attachedtoparent);
});
1.等待乙個任務,可以使用wait或者訪問result
2.或者靜態方法,task.waitall等待所有任務,task.waitany等待任意乙個任務
task.waitall(task,task2);
task.waitany(task, task2);
通過在建立任務時傳入取消令牌,來取消任務。取消之後,會丟擲異常
cancellationtokensource source = new cancellationtokensource();
source.cancelafter(500);
var task = task.factory.startnew(()=>
, source.token);
1.continuewith方法將在乙個任務執行完畢之後立即執行乙個委託
var task = task.factory.startnew(()=>
).continuewith(ant=>
).continuewith(ant =>
);
2.在前面的任務結束、失敗、或取消後,延續的任務開始執行。引數是前面任務的引用。可以一直新增延續。
3.預設前導任務和延續會在不同的執行緒上執行,但是也可以設定為同一執行緒,需要指定選項taskcontinuationoptions.executesynchronously
4.使用前導任務的結果
var task = task.factory.startnew(()=>
).continuewith(ant=>
).continuewith(ant =>
);
5.延續任務可以查詢前導任務的exception屬性來確認前導任務是否執行失敗
6.呼叫wait可以重新丟擲前導任務的異常
7.或者分別為異常和正常的結果指定不同的延續
8.延續任務只有在所有子任務完成之後才會執行,子任務的所有異常都會封送到延續中
9.一般延續任務是無條件執行的,但是可以通過設定來決定延續是否執行。
var task = task.factory.startnew(() =>
).continuewith(ant =>
,taskcontinuationoptions.onlyonrantocompletion)
.continuewith(ant =>
);
上面的例子,one不會執行,two也不會執行,three會執行
notonrantocompletion:正常執行
notonfaulted:在錯誤的時候不取消
notoncanceled:在取消令牌時不取消
可以用或(|)組合
10.具有多個前導任務的延續任務
wnenall,whenany
var task = task.factory.startnew(() =>
);var task2 = task.factory.startnew(() =>
);task.whenall(task,task2).continuewith(ant =>
);
1.concurrentstack,concurrentqueue,concurrentbag都是用鍊錶實現的。list沒有併發集合版本。
var d = new concurrentdictionary();
for (int i = 0; i < 20; i++)
var d1 = new dictionary();
for (int i = 0; i < 20; i++)
}
2個**在功能上是等價的,但是在執行速度上是傳統的lock語句快。讀取不會有什麼明顯的差異。 第二十三天
1 使用 koa 搭建伺服器 const koa require koa 路由請求 context ctx 上下文 包含req和res ctx.body hello koa2 2 如何配置 koa 路由 const koa require koa 建立路由物件 const router requir...
UNPv1第二十三章 執行緒
在傳統的unix模型中,當乙個程序需要由另乙個實體執行某件事時,該程序派生 fork 乙個子程序,讓子程序去進行處理。unix下的大多數網路伺服器程式都是這麼編寫的,這在我們的併發服務程式例子中可以看出 父程序接收連線,派生子程序,子程序處理與客戶的互動。雖然這種模式很多年來使用的很好,但是fork...
Vue 第二十三章v on事件處理
1.目的,因為在做前端開發的時候需要進行原生事件處理,以下 是使用兩個不同的點選事件來觸發對應的內容 比如第乙個是演示獲取之前的按鈕上的內容,第二個是獲取事件屬性 事件處理 stop prevent once 單擊事件會繼續傳播 阻止單擊事件會繼續傳播 xiaotaozi網 小桃子網 點選事件將只會...