我的问题的快速版本:
当您访问对象的同一实例时,是否只需要使用“lock”?例如,如果我在我的线程输入方法中实例化所有新内容,我是否必须担心锁定任何对象?
我的问题的详细解释:
我的方案是,我有一个具有唯一标识符的工作对象,该工作对象中有1个方法。在该方法中,我创建了多个Web服务代理的新实例,并将从这些调用中检索到的信息存储在工作对象的公共属性中。完成所有工作后(所有线程都已完成),我将信息存储到数据库中。
有什么理由考虑使用“锁定”吗?
答案 0 :(得分:1)
您只需要在不应同时运行的一个或多个代码段上使用lock
。例如,如果您的代码在多个线程上使用相同的List<T>
,则需要使用锁。
在您的情况下,如果每个线程有一个单独的工作对象,并且如果它们不与任何其他工作对象交互或访问任何共享状态,那么您应该没问题。
如需更具体的答案,请发布更多详情,或者,最好是来源。
编辑:在回复您的评论时,这取决于InvokeService
的实施情况。只要它不访问任何其他静态成员,你可能会在没有任何锁定的情况下正常运行。
答案 1 :(得分:0)
你说得对 - 你不需要锁定不通过线程访问的对象。
然而。请注意,没有全局资源(即I / O流),这些资源已经被多个线程访问而没有同步。
答案 2 :(得分:0)
如果要从多个线程访问静态字段或属性,则只需使用lock关键字。