【问题标题】:Does queuing threads impact non-thread safe objects in the same class?排队线程是否会影响同一类中的非线程安全对象?
【发布时间】:2009-05-07 13:38:10
【问题描述】:

如果我使用 ThreadPool.QueueUserWorkItem 生成一个线程并且该线程没有引用非线程安全的对象,它会损害该非线程安全的对象吗?

[编辑] 我所说的非线程安全对象是指可编程逻辑控制器的第三方接口,它无法打开同时连接或并发支持。

我想我只是想确保通过在与我对该对象的引用相同的类中排队线程,我不会以某种我没有意识到的方式损害它的线程安全性。

【问题讨论】:

    标签: c# .net vb.net multithreading clr


    【解决方案1】:

    线程并不神奇。如果他们不引用某些数据,那么他们就不会影响它。


    编辑:如果您有监控新线程的创建和监控 QueueUserWorkItem 的代码,并且如果监控器修改了这些非线程安全对象,那么是的,会有影响。

    否则,不。

    【讨论】:

      【解决方案2】:

      只要新线程不直接或间接引用非线程安全对象,就不会对其产生影响。

      小技术点。调用 ThreadPool.QueueUserWorkItem 不一定会产生一个新线程。相反,它确保提供的委托将在不同的线程上运行。这可能会导致创建线程,或者更可能的情况是它将使用已分配给线程池的现有线程。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-14
        • 1970-01-01
        • 1970-01-01
        • 2016-05-15
        • 2010-12-09
        • 1970-01-01
        相关资源
        最近更新 更多