c#多執行緒問題
1樓:
使用到同乙個類的話肯定是會有影響的,可以加lock關鍵字給方法上鎖,每次只能由乙個執行緒來修改執行它,其他的執行緒要是想呼叫的話只能等待上乙個執行緒執行完。
2樓:路有時不在腳下
如果不是靜態,不會影響。
3樓:但山禹醉山
跨執行緒訪問控制項。你這個**如果在vs2008裡是不能編譯的。
把thread
thdnew
thread(new
threadstart(work))裡的work直接改成後面的setnumber,而while(true)裡面的,7).tostring()這句用匿名方法包含到setnumber函式里面,在setnumber函式里面呼叫函式跨執行緒更新控制項。
c#非同步和多執行緒有什麼區別和聯絡?
4樓:網友
非同步和多執行緒可以說沒有必然的聯絡,只能說非同步可以通過多執行緒實現而已。
要理解這些東西,你得具備很多相關的知識,作業系統原理,編譯原理等。
簡單地來說,計算機或者說cpu執行你的**都是順序執行的,當前的語句沒有執行完,不會執行後面的語句的,這是永遠不變的規則!
但是這樣的機制會使整個執行效率很低,因為cpu總是要等待當前的語句執行完畢了才會執行後面的**,而計算機在絕多數的時候都是處於等待使用者的輸入,等待磁碟檔案的讀取完成,等待網路資料的傳輸完成中,所以為了提高整個系統的執行效率,提高cpu的執行效率,計算機系統引入了非同步的機制。
非同步機制,簡單地說就是cpu不會傻傻地處於等待狀態,它會先幹別的事情,當它需要的東西已經準備完畢後(大多數的情況都是等待外部的輸入資料準備完畢,也有些是複雜的計算完畢),硬體系統給cpu一箇中斷,告訴有了新的資料了,你現在可以去處理了。
這就是最基本的非同步原理,而現代操作作業系統對硬體系統做了良好的封裝,把很多底層機制遮蔽了,為程式的開發者提供了事件和多執行緒的概念,讓程式的開發者可以更好地利用非同步機制。
再說說多執行緒吧。多執行緒是計算機引入了作業系統之後才有的概念,至於為什麼計算機要引入作業系統,在此就不敘述了,自行了解。多執行緒的實現有兩個方法,乙個就是增加cpu的核數和個數,這是最直接的方法,還有一種是採用cpu輪詢的方式,每個程序都執行一段時間,又去執行另乙個程序的指令,由於切換的速度非常的快,給人的感覺就是同時執行的。
說了這麼多,你可能很失望,因為沒有**,沒有舉例。但我想說的是,用**無法說明這個問題,不同的作業系統,不同的程式語言,不同的程式設計框架,對非同步和多執行緒的定義和處理是不一樣的,但原理就是這樣的。
我們寫**無非就是寫一堆的指令去要求cpu執行,同步的方式就是這樣的:
我:hi,cpu,我要你做一件事情,而且必須立刻馬上就做,因為我正在等著你。
cpu:那你就等著吧,我現在去做。
非同步的方式是這樣的:
我:hi,cpu,我要你做一件事情,但是不是立刻就做,你可以交給下面的人去做,或者找乙個幫手來,我們繼續做後面的事情。
cpu:好的,我現在通知硬體去做,等有結果了我通過事件告訴你。
或者cpu:好的,我讓另乙個核心來做這件事情,我們繼續(其實多執行緒是作業系統實現的,我只是這麼舉個例子而已)
java多執行緒同步資源上的問題
程式的執行 copy結果出現了一次或幾次負 bai數,或者資金du不能剩餘的高zhi 低排列。原因分析 兩個執行緒同dao時訪問account賬戶,這就形成了共享資源,具體到程式中 當th1執行 if account.checkbalance 600.5 0 時,假如剩下的資金還為900,則th1繼...
目前電腦電源風扇標準是12cm還是10cm或14cm
12cm的用的比較多.一般新機箱都是12的 整個電腦電源是14cm,電源風扇12cm 請問 能不能換成14cm的電源風扇,或者16 18,或更大?理論上可以換,不過可能換上14後無法蓋上外殼,建議你還是換回新的cm 吧 要看你電腦上風扇的安裝位置的空間能不能放下了。還有安裝孔的尺寸是不是合適,否則不...
直角梯形,較長的一條腰為8cm,下底長10cm,如果把上
8 10十10 10 6 18十10 4 32 厘公尺 答 梯形的周長是32厘公尺。乙個直角梯形,上底為2厘公尺,一條腰長10厘公尺,如果把它的上底增加6厘公尺,就變成乙個正方形。上底增加6厘公尺,變成乙個正方形,則上底變為8厘公尺。正方形邊長為8厘公尺,正方形的周長為32厘公尺 乙個直角梯形下底為...