【问题标题】:Multithreading and Delegates Execution多线程和委托执行
【发布时间】:2010-07-19 03:53:55
【问题描述】:

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

【问题讨论】:

    标签: c# .net multithreading delegates


    【解决方案1】:

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

    这就是线程安全发挥作用的地方。两个不同的线程同时执行一个方法本身并没有什么坏处,但是如果该方法触及其所有者类的实例成员并且这两个线程同时针对单个实例工作,您将面临线程冲突和错误的风险从致命错误到奇怪、微妙和难以重现的行为。我的经验法则是在可以避免的情况下不要混合线程和状态。

    【讨论】:

    • 感谢您的更新。如果我要提供一些锁定机制,它是正在处理的对象的一部分,例如 SyncRoot 对象,这是否会使其他线程等待其他线程?或者唯一会等待的线程将是处理同一对象的线程?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多