C# 多線程task


1.異步和多線程的區別?
沒什么太大區別。異步是目的,使用多線程實現。想想AJAX異步加載,不就是不想讓瀏覽器界面卡住嘛,所以在程序中對於某些單獨的操作,比如寫日志,我們不想等它完成后再執行其它操作(因為寫日志只是記錄和應用提供的功能無關),可以單獨開一個線程來執行執行寫日志的操作。

2.什么是多線程?
同時執行多個任務。為什么你的程序不能同時執行多個任務?因為整個程序就是一個主線程,而一個線程同時只能從上至下順序完成任務。比如控制台應用,你在一個while(true)的代碼里Console.WriteLine(1)。拿這個程序就會在while(true)的代碼里走不出來,可是如果你開啟一個其它線程,在另一個線程里while(true)並且 Console.WriteLine(2),那控制台就可以同時打印1和2

3.thead和theadpool
C#中對於線程的開啟可以使用thead這個類來開啟。theadpool是一個線程池,對於需要頻發開啟線程的操作是一個優化。                                  

4.thead和theadpool

C#中對於線程的開啟可以使用thead這個類來開啟。theadpool是一個線程池,對於需要頻發開啟線程的操作是一個優化。thead和theadpool並不怎么容易控制所以不建議使用它們開啟線程,task一般來講是用來替代theadpool的,畢竟theadpool坑太多。

至C#4.0起,線程建議使用task。task會根據你線程的任務,來決定內部是使用thead還是theadpool來完成你指定的任務。這是它強大的地方。

5.數據安全問題
數據安全問題。也有人稱之為重入和集合安全問題。這是因為在多線程編程下,多個線程同時操作一個數據,會導致數據改變的莫名其妙不符合你的需要,一般有三個方法,我覺得最簡單的就是使用lock鎖住這個數據,不讓其它線程訪問只讓當前線程訪問。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM