非同步執行緒學習筆記(二) Join和Sleep

2021-10-24 14:44:26 字數 1077 閱讀 8957

在上一章學習過後,我們肯定希望能控制線程有序,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

接上文 多執行緒程式設計學習筆記 使用併發集合 一 接上文 多執行緒程式設計學習筆記 使用併發集合 二 接上文 多執行緒程式設計學習筆記 使用併發集合 三 假設以下場景,如果在客戶端執行程式,最的事情之一是有乙個響應的使用者介面。這意味著無論應用程式發生什麼,所有的使用者介面元素都要保持 快速執行,...