【发布时间】:2011-03-03 16:19:28
【问题描述】:
我有一个静态类,它有几个方法,它们只接收一个字节数组,解析它,然后返回一个结构。我需要从许多单独的线程中调用这些方法。我是否需要在方法中使用 lock() 或某种线程安全?我无法理解它。
【问题讨论】:
-
你的方法使用静态变量吗?
-
方法包含变量,但它们不是静态的。
标签: c# multithreading static-methods
我有一个静态类,它有几个方法,它们只接收一个字节数组,解析它,然后返回一个结构。我需要从许多单独的线程中调用这些方法。我是否需要在方法中使用 lock() 或某种线程安全?我无法理解它。
【问题讨论】:
标签: c# multithreading static-methods
如果您的方法是reentrant,则不需要任何锁。
通常,只要多个线程访问共享资源,您就需要锁定。当该方法只是根据其参数计算某些东西而不访问任何共享资源时,就没有什么要锁定的了。
【讨论】:
是的,lock 防止多个线程同时访问相同的数据,这通常会导致不一致/不可预测的行为。
【讨论】:
如果您的方法具有共享资源,那么您需要同步访问它。你的情况是没有共享资源,因此不需要锁定任何东西。
【讨论】: