Hou*_*man 11 .net multithreading locking
我最近在接受采访时,技术人员问我如何使应用程序线程安全.
好吧,在lock()正确解释之后,他说把对象当作静态不是一个好主意.
private static readonly object _syncLock = new object();
Run Code Online (Sandbox Code Playgroud)
他声称原因是静态使得线程锁定的对象比非静态时更慢.这是真的?
编辑:尽管如此,我仍然不确定.这三种方法有什么区别?
private static readonly object _syncLock = new object();
public static readonly object _syncLock = new object();
private readonly object _syncLock = new object();
Run Code Online (Sandbox Code Playgroud)
Dan*_*ner 12
如果锁定对象应该是静态的,则取决于要锁定的对象.如果要锁定类的实例,则不能使用静态锁定对象.如果要锁定静态数据,则无法使用实例锁定对象.所以似乎没有任何选择.
您可以考虑使用静态或实例锁定对象来锁定对实例数据的访问,但这会导致不同的行为.使用实例锁定对象时,只锁定实例,而静态锁定对象将锁定所有实例.所以在这里也没有选择性能调优的选择.
| 归档时间: |
|
| 查看次数: |
5747 次 |
| 最近记录: |