理解c#的多執行緒的時間片分配
class ThreadClass {
public static void MyThread() {
for (int x = 0; x < 100; x++) {
Console.ForegroundColor = ConsoleColor.Red;
Console.Write(x.ToString("000")+" ");
}
}
static void Main(string[] args) {
Thread thrd1 = new Thread(new ThreadStart(MyThread));
thrd1.Start();
for (int x = 300; x < 400; x++) {
Console.ForegroundColor = ConsoleColor.Green;
Console.Write((x).ToString("000")+" " );
}
Console.ReadLine();
}
public static void MyThread() {
for (int x = 0; x < 100; x++) {
Console.ForegroundColor = ConsoleColor.Red;
Console.Write(x.ToString("000")+" ");
}
}
static void Main(string[] args) {
Thread thrd1 = new Thread(new ThreadStart(MyThread));
thrd1.Start();
for (int x = 300; x < 400; x++) {
Console.ForegroundColor = ConsoleColor.Green;
Console.Write((x).ToString("000")+" " );
}
Console.ReadLine();
}
}
執行,結果如下圖:
為什麼“000”會顯示為綠色?共有兩個執行緒,先執行main中的Console.ForegroundColor = ConsoleColor.Green;和Console.ForegroundColor = ConsoleColor.Green;,顯示綠色300->執行MyThread中的Console.ForegroundColor = ConsoleColor.Red->執行main的Console.ForegroundColor->Mythread中的Console.Write(x.ToString("000")+" ");顯示綠色000。
同理,“303”、“310”、“312”等顯示為紅色,而“”003“、”004“、”005“等顯示為綠色。
可見多執行緒的時間片的分配具有很大的不確定性,執行緒間一般不應共享同一個變數。
Console.ForegroundColor = ConsoleColor.Red;
相關文章
- Java執行緒的CPU時間片Java執行緒
- Java多執行緒——獲取多個執行緒任務執行完的時間Java執行緒
- C#中的執行緒(三)多執行緒C#執行緒
- C#多執行緒學習(五) 多執行緒的自動管理(定時器)C#執行緒定時器
- C# 多執行緒學習(5) :多執行緒的自動管理(定時器)C#執行緒定時器
- C#多執行緒學習(四) 多執行緒的自動管理(執行緒池)C#執行緒
- C# 多執行緒學習(4) :多執行緒的自動管理(執行緒池)C#執行緒
- java多執行緒5:執行緒間的通訊Java執行緒
- C# 多執行緒C#執行緒
- C#多執行緒學習(一) 多執行緒的相關概念C#執行緒
- C# 多執行緒學習(1) :多執行緒的相關概念C#執行緒
- C#多執行緒(6):執行緒通知C#執行緒
- 多執行緒圖片執行緒
- C#多執行緒之旅(3):執行緒池C#執行緒
- C#多執行緒程式設計(1):執行緒的啟動C#執行緒程式設計
- C# 多執行緒猜想C#執行緒
- C#多執行緒下的調優C#執行緒
- c#多執行緒 Invoke方法的使用C#執行緒
- 多執行緒之間的通訊執行緒
- java多執行緒間的通訊Java執行緒
- 多執行緒之間的競爭執行緒
- 多執行緒的補充 獲取一定時間的執行結果執行緒
- C#多執行緒開發-執行緒同步 02C#執行緒
- C#多執行緒開發-執行緒池03C#執行緒
- 關於Python多執行緒的理解Python執行緒
- 多執行緒:執行緒池理解和使用總結執行緒
- 手撕Java多執行緒(四)執行緒之間的協作Java執行緒
- C#中多執行緒 委託的使用C#執行緒
- 瞭解下C# 多執行緒C#執行緒
- 徹底明白Java的多執行緒-執行緒間的通訊(2)(轉)Java執行緒
- 徹底明白Java的多執行緒-執行緒間的通訊(1)(轉)Java執行緒
- C#多執行緒開發-執行緒基礎 01C#執行緒
- [深入學習C#]C#實現多執行緒的方法:執行緒(Thread類)和執行緒池(ThreadPool)C#執行緒thread
- 對Java多執行緒的一些理解Java執行緒
- 多執行緒之間通訊及執行緒池執行緒
- 深入理解Flutter多執行緒Flutter執行緒
- 理解 python 中多執行緒Python執行緒
- 執行緒以及多執行緒,多程式的選擇執行緒