在上一章學習過後,我們肯定希望能控制線程有序,join和sleep可以通過阻塞執行緒成達到這一目的,下面我們開始學習join和sleep方法。
join方法:等待另乙個執行緒完成。
示例如下:
namespace joinandsleep
private static void threadproc()
");if (thread.currentthread.name=="thread1"&&thread2.threadstate!=threadstate.unstarted)
thread.sleep(2000);
console.writeline($"\ncurrent thread: ");
console.writeline($"thread1: ");
console.writeline($"thread2: ");}}
}
這裡的執行順序是,建立執行緒一,開始執行緒一,然後進入到委託的函式中,列印出最近的執行緒名稱,這裡列印的是執行緒一,然後再判斷是否滿足條件,與此同時,執行緒二可能已經開始了,並滿足這裡的條件,執行緒一就要等到執行緒二執行完成後才執行,所以列印出的最終結果,應該是
current thread :thread1
current thread :thread2
current thread: thread2
thread1: waitsleepjoin
thread2: runningcurrent thread: thread1
thread1: running
thread2: stopped
此外join方法還可以新增超時,而且將返回乙個bool值判斷是否超時
thread.join((ms)/(timespan型別的時間))
當執行緒超過設定時間還未完成時,認為超時,返回false,
否則返回true。
sleep方法我們需要了解乙個特殊的使用方法:
thread.sleep(0)
這樣將會立刻結束執行緒
而且,thread.join和thread.sleep從根本上來講都是阻塞執行緒,屬於核心操作。
非同步執行緒學習筆記(六) 前台執行緒和後台執行緒
在預設情況下,我們手動建立的執行緒都是前台執行緒,而只要有前台執行緒在執行,應用程式就會一直處在活躍的狀態,當然,一旦所有前台執行緒都結束了,即便還有後台執行緒存在,應用程式也會結束。此外,我們還要知道,前台執行緒和後台執行緒只是執行緒的狀態,和執行緒的優先順序及分配的時間片大小無關。那麼怎麼建立和...
C 多執行緒學習 (二) 非同步函式
非同步函式是c 5.0引入的新語言特性。使用非同步函式可以規避人為執行緒操作,簡化了非同步程式設計的方法。非同步函式的呼叫過程 工作執行緒繼續執行後續操作,直至await標記的非同步操作完成 當非同步操作完成後,執行非同步函式中後續操作。限制條件 注意 通過async呼叫方法比正常呼叫方法慢40 5...
多執行緒程式設計學習筆記 使用非同步IO
接上文 多執行緒程式設計學習筆記 使用併發集合 一 接上文 多執行緒程式設計學習筆記 使用併發集合 二 接上文 多執行緒程式設計學習筆記 使用併發集合 三 假設以下場景,如果在客戶端執行程式,最的事情之一是有乙個響應的使用者介面。這意味著無論應用程式發生什麼,所有的使用者介面元素都要保持 快速執行,...