Use*_*ser 2 c# validation multithreading locking
假设您将一个数组作为参数传递给给定的方法,比方说,
public static DoSomething (string[] array)
{
// Do something with array here.
}
Run Code Online (Sandbox Code Playgroud)
并且在方法内部使用一些指令,如果array包含无效数据则抛出异常.在多线程可能正在访问的多线程环境中array,您应该按什么顺序进行操作?
1)锁定阵列以确保同时只有一个线程在其上运行,并在锁定后验证它,一旦完成工作就释放锁定; 要么
2)立即检查阵列的有效性,如果有效,将其锁定并开始工作.
如果为"null",则无法锁定"数组"; 但无论如何都没关系- 参考不能改变; 即使内容发生变化,它仍然是相同的参考.因此,您可以推迟锁定,直到您对内容感兴趣为止.
所以:
如果您的意思是一般有效性 - 这取决于是否有任何线程要更改内容.如果不是......嗯,不需要锁.如果他们正在更改内容,您需要在验证之前锁定,否则您的验证没有实际意义.
| 归档时间: |
|
| 查看次数: |
192 次 |
| 最近记录: |