c 執行緒 非阻塞執行緒實踐

2021-09-28 16:38:33 字數 1804 閱讀 3809

1.先建立乙個列表並放置資料若干(這裡:0~9)。

2.然後在對列表的資料進行加工(這裡:將資料乘以2)。

3.將加工完了的資料表示出來。

1.執行效果

namespace 非阻塞執行緒模擬

}class zhusai

void fun0()

}void fun1()

}list0[i] *= 2;

console.writeline(list0[i]);}}

}}1.執行效果

2.**分析 

using system;

using system.collections.generic;

using system.threading;

namespace 非阻塞執行緒模擬

}class feizhusai

void fun0()

}void fun1(object stateinfo)}}

1.執行緒利用率分析

運算阻塞

非阻塞執行緒1

執行緒2執行緒1

執行緒20

0寫入list0

等待寫入list0

計算0*2,並表示

11寫入list0

等待+計算0*2,並表示

寫入list0

計算1*2,並表示

22寫入list0

等待+計算1*2,並表示

寫入list0

計算2*2,並表示

33寫入list0

等待+計算2*2,並表示

寫入list0

計算3*2,並表示

44寫入list0

等待+計算3*2,並表示

寫入list0

計算4*2,並表示

55寫入list0

等待+計算4*2,並表示

寫入list0

計算5*2,並表示

66寫入list0

等待+計算5*2,並表示

寫入list0

計算6*2,並表示

77寫入list0

等待+計算6*2,並表示

寫入list0

計算7*2,並表示

88寫入list0

等待+計算7*2,並表示

寫入list0

計算8*2,並表示

99寫入list0

等待+計算8*2,並表示

寫入list0

計算9*2,並表示

空閒等待+計算9*2,並表示

2.規律總結

1.阻塞方式cpu有等待,而非阻塞沒有 cup等待

2.阻塞方式是兩個執行緒協調處理,非阻塞是把任務交給另乙個執行緒就不管了,如果執行緒1是領導的話,顯然非阻塞的執行緒1管了的更輕鬆

3.從執行的效果看非阻塞明顯順序亂了,這個其實可以通過表示層處理優化的。

4.從cpu只有兩個執行緒的理想狀態分析,時候非阻塞看不出太多的優勢,只第乙個運算的時候有等待,後面的等待幾乎沒有發生。但是執行緒更複雜的情況,阻塞運算的每乙個等待都可能真實發生。

併發,同步,非同步,阻塞,非阻塞,執行緒

乙個cpu沒有真正意義的併發,兩個人同時做同樣的事情才是真正意義上的併發,只有統籌分時處理.多路同步 同步,實時處理並且活動按順序執行 非同步,乙個人合理的安排時間來做事情,分時處理,活動分段執行,非順序執行 阻塞模式,等,同步,併發,非同步都有可能會阻塞,只是機率的大小 非阻塞模式 不等 併發,併...

程序與執行緒 阻塞與非阻塞

程序 cpu執行任務的模組。執行緒 模組中的最小單元。cpu比作我們每個人,到飯點吃飯了。可以點很多菜 cpu中的程序 宮保雞丁,魚香肉絲,酸辣土豆絲。每樣菜具體包含了哪些內容 cpu每個程序中的執行緒 宮保雞丁 詳情 黃瓜 胡蘿蔔 雞肉 花生公尺 而詳情構成了宮保雞丁這道菜,吃了以後不餓。就可以幹...

程序 執行緒 同步非同步 阻塞非阻塞

2015 08 19 15 23 38 週三 執行緒執行緒安全 如果你的 所在的程序中有多個執行緒在同時執行,而這些執行緒可能會同時執行這段 執行緒安全問題都是由全域性變數及靜態變數引起的 若每個執行緒中對全域性變數 靜態變數只有讀操作,而無寫操作,一般來說,這個全域性變數是執行緒安全的 若有多個執...