c#5.0推出了非同步程式設計,通過關鍵字async 和 await及返回型別為task(無返回值的非同步方法)和task(返回值為t的非同步方法)可以將方法封裝為非同步方法。呼叫非同步方法時,遇到await關鍵字程式會立即返回到呼叫者,直到await後的方法執行完成。包括兩種非同步方式:i/o繫結**、cpu繫結**
cpu 繫結示例:為遊戲執行計算
假設你正在編寫乙個移動遊戲,在該遊戲中,按下某個按鈕將會對螢幕中的許多敵人造成傷害。 執行傷害計算的開銷可能極大,而且在 ui 執行緒中執行計算有可能使遊戲在計算執行過程中暫停!
此問題的最佳解決方法是啟動乙個後台執行緒,它使用 task.run 執行工作,並 await 其結果。 這可確保在執行工作時 ui 能流暢執行。
c#private damageresult calculatedamagedone()
calculatebutton.clicked += async (o, e) =>
;可見cpu繫結時是通過額外開執行緒來實現非同步的,即多執行緒。
非同步程式設計與多執行緒的區別
多執行緒和非同步程式設計是兩個不同的概念。多執行緒的應用場景是針對同時有多個任務需要處理的情形;非同步程式設計針對的是同步程式設計導致的執行緒阻塞的場景。
非同步程式設計的cpu**繫結通過多執行緒來實現(因為必須要有cpu參與工作),而諸如io類的非同步的硬體基礎是讀寫磁頭讀寫資料時不需要cpu的參與,因此無需cpu執行執行緒幹等著其返回。
更多關於多執行緒的文章收藏:
C 併發程式設計 非同步程式設計與多執行緒
併發 同時做多件事情 多執行緒 併發的一種形式,它採用多個執行緒來執行程式。並行處理 把正在執行的大量的任務分割成小塊,分配給多個同時執行的執行緒。並行處理是多執行緒的一種,而多執行緒是併發的一種。非同步程式設計 併發的一種形式,它採用 future 模式或 callback 機制,以避免產生不必要...
非同步程式設計(或多執行緒程式設計)
程序是一種正在執行的程式。執行緒是程式中的乙個執行流。多執行緒是指乙個程式中可以同時執行多個不同的執行緒來執行不同的任務。thread是建立和控制線程的類。managedthreadid是執行緒id。currentthread是獲取當前正在執行的執行緒。同步是呼叫一旦開始,呼叫者必須等到方法呼叫返回...
python的多執行緒與非同步程式設計
作業系統中,程序是資源分配的基本單位,執行緒是pu排程 程式執行 的最小單位。計算機執行程式必須分配資源 記憶體,有堆 棧 自右儲存區 全域性 靜態變數區 資料區 關於多執行緒的介紹,這不再闡述,請見python內建函式thread encoding utf 8 多執行緒測試 import time...