提问人:CodeAdze 提问时间:4/17/2023 更新时间:4/17/2023 访问量:67
VB.net 是作为原子块执行的一行代码
In VB.net Is A Line Of Code Executed As An Atomic Block
问:
我正在尝试学习和使用更多的异步代码,但让自己对原子执行和不执行的内容感到困惑。
Private Sub PublishUpdateNotification()
If Interlocked.Increment(WaitingThreadCount) > 1 Then Exit Sub
Task.Run(Sub() DeliverTheNotifications())
End Sub
Private Shared Readonly Property WaitingThreadCount as Integer = 0
End Class
在上面的代码片段中,如果该方法由两个线程调用,则该行是否会作为原子块执行,或者在第一个线程递增之后但在测试其值之前是否会发生上下文切换,从而允许第二个线程也增加含义两个语句都将针对值 2 进行测试,并且都将退出 sub,这不是我的意图。If Interlocked.Add(...
WaitingThreadCount
WaitingThreadCountValue
If
我需要在 a 中做这个测试吗?Synclock
提前致谢。
答:
0赞
dbasnett
4/17/2023
#1
FWIW(英语:FWIW)
Private Sub PublishUpdateNotification()
If Interlocked.Increment(WaitingThreadCount) <= 1 Then
Task.Run(Sub() DeliverTheNotifications())
End If
End Sub
评论
SyncLock
Interlocked.Increment