如果我使用ThreadPool.QueueUserWorkItem生成一个线程,并且该线程没有引用非线程安全的对象,它是否会破坏该非线程安全对象?
[编辑] 通过非线程安全对象,我的意思是可编程逻辑控制器的第三方接口,它无法打开同时连接或并发支持。
我想我只是想确保通过在与我对该对象的引用相同的类中排队线程,我不会以某种我没有意识到的方式妥协其线程安全性。
答案 0 :(得分:2)
线程不是魔术。如果他们没有引用某些数据,那么他们就不会影响它。
编辑:如果您有代码监视新线程的创建,并监视QueueUserWorkItem,并且监视器修改了这些非线程安全对象,那么是的,会产生影响。
否则,不。
答案 1 :(得分:0)
只要新线程不直接或间接引用非线程安全对象,它就不会影响它。
小技术点。调用ThreadPool.QueueUserWorkItem不一定会产生新线程。它确保提供的委托将在不同的线程上运行。这可能会导致创建一个线程,或者更可能的情况是它将使用已经分配给线程池的现有线程。