2011-03-23 65 views
0

我在玩線程。我有一個問題,我認爲它是一個非常基本的一個:線程同步問題

我有一個類:

Class Message { 
    public WriteMsg(string msg) 
    { 
     Console.Writeline(msg); 
    } 
} 

我創建這個類的一個對象

Message msg = new Message(); 

現在我創建10個線程和通這個消息對象是由十個線程執行的函數。每個都會將其線程索引傳遞給writemsg,寫入標準輸出。我編寫並測試了應用程序及其編寫的線索索引1至10.

正如您所看到的,我沒有實現任何種類的同步。如果類正在執行上面提到的功能,在訪問線程中的對象時是否需要鎖定機制?

回答

0

如果線程正在使用共享變量,則需要線程間同步。
在你的簡單例子中沒有共享變量。所以不需要同步

+0

@ user384706我有另一個後續問題。我正在讀asp.net線程池,它指定你可以創建5個左右的工作線程和大約1000個I/O線程,但是你可以創建只有很多線程映射到一個核心。那麼,asp.net框架的實現是否是內核線程映射的用戶線程? – 2011-03-28 14:31:03

+0

@ asp.nerd:我不知道有關asp.net的情況。一般而言,儘管您不應該啓動任何線程,但線程越多,獲得CPU訪問權限越高,因此性能越差。除非線程長時間被阻塞,例如對於I/OI來說,這是你在asp.net中描述的模型,也就是說,工作線程應該和CPU一樣多,而不是更多具有併發性,並且對於分配給有很多阻塞任務的線程,你可以擁有任何號碼。希望這有助於。 – Cratylus 2011-03-29 20:20:47

0

這取決於你在做什麼,如果它是從非原子對象修改或讀取的方法比是。對於你的情況,這是沒有必要的。