Sql*_*yan 9 .net multithreading locking interlocked synclock
我已经在VB.NET中做了一段时间的简单多线程,并刚刚进入我的第一个大型多线程项目.我总是使用Synclock声明完成所有事情,因为我认为没有更好的方法.
我刚刚了解了这个Interlocked类 - 它看起来好像这一切:
Private SomeInt as Integer
Private SomeInt_LockObject as New Object
Public Sub IntrementSomeInt
Synclock SomeInt_LockObject
SomeInt += 1
End Synclock
End Sub
Run Code Online (Sandbox Code Playgroud)
可以用单个语句替换:
Interlocked.Increment(SomeInt)
Run Code Online (Sandbox Code Playgroud)
这会在内部处理所有锁定并修改数字.这比为简单操作编写自己的锁要简单得多(更长时间运行或更复杂的操作显然仍然需要自己的锁定).
当我可以使用这些Interlocked方法完成同样的事情时,我是否有理由使用专用锁定对象来进行自己的锁定?
你是对的; Interlocked应该在这里使用,并且会比它更快SyncLock.
但是,这Interlocked门课并不为人所知.
但是,有些情况下您需要使用SyncLock而且Interlocked无法提供帮助.