2011-03-23 69 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

这取决于你在做什么,如果它是从非原子对象修改或读取的方法比是。对于你的情况,这是没有必要的。