總述:.Net中的線程允許你構建出快速響應並且高效的應用程序。許多應用程序需要執行多個動作(比如用戶界面交互和數據處理),而線程則提供了完成這項工作的能力。
1、線程(thread):代表程序中的單個執行邏輯流程。有些程序只需要一個線程即可高效執行,但許多程序需要多個線程。
2、死鎖(deadlocking):有些數據由於線程間出現相互依賴而導致死鎖(即線程A擁有線程B正在等待的資源,而線程B擁有線程A正在等待的資源)。
3、競態條件(race condition):當兩個線程同時訪問一個共享變量時,兩個線程讀取變量並且得到相同的值,然后競爭哪一個線程能夠最后寫入到共享變量中。最后一個寫入到變量的線程“取勝”,因為它覆蓋了第一個線程寫入的值。
4、同步(synchronization):是關於協調線程或進程之間的活動,並確保被多個線程 或進程訪問的數據一直有效。同步允許線程和進程步調一致地操作。理解允許你在程序中執行多個線程的構造給了你創建能夠更好地利用可用資源、更具拓展性的應用程序的能力。簡言之:同步就是協同步調,按預定的先后次序進行運行。如:你說完,我再說。(還是百度百科來的爽快!)
5、並發(concurrency):在操作系統中,是指一個時間段中有幾個程序都處於已啟動運行到運行完畢之間,且這幾個程序都是在同一個處理機上運行。
6、並行(Parallel):當系統有一個以上CPU時,則線程的操作有可能非並發。當一個CPU執行一個線程時,另一個CPU可以執行另一個線程,兩個線程互不搶占CPU資源,可以同時進行,這種方式我們稱之為並行。
7、並發與並行區別:並行是指兩個或者多個事件在同一時刻發生;而並發是指兩個或多個事件在同一時間間隔內發生。
8、進程 :是具有一定獨立功能的程序關於某個數據集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位.
9、進程與線程區別:線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位.線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源.
