多线程和代表执行

时间:2010-07-19 03:53:55

标签: c# .net multithreading delegates

我创建了一个对象,它具有处理不同类型事件的特定方法,并且一直存在,直到我的应用程序运行。我还创建了指向每个方法的单个委托,并引用了x个线程。给定y和z线程将通过使用指向它的委托来调用method1,z线程是否会等待y线程完成才能使用method1?或者他们可以同时调用它?

1 个答案:

答案 0 :(得分:2)

除非您使用锁定或其他类型的互斥锁,否则每个线程将并行调用委托后面的方法。他们不会等待对方。

这是线程安全发挥作用的地方。两个不同的线程同时执行一个方法没有任何本质上的错误,但如果该方法触及其所有者类的实例成员并且这两个线程同时针对单个实例工作,则存在线程冲突和错误的风险从致命错误到奇怪,微妙和难以复制的行为。我的经验法则是,当我可以避免它时,不要混合线程和状态。