- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在一个管理自动刷新某些对象的类中有以下代码,它还允许您手动刷新。我想让它成为线程安全的。
Public Function ForceRefresh() As Foo
DoRefresh()
ResetTimer()
Return Me.CurrentFoo
End Function
Private Sub DoRefresh()
Me._currentFoo = Me._retriever.GetTheFoo()
End Sub
Synclock
这两种方法:
ForceRefresh
: 所以我们不会让多个消费者线程同时尝试强制刷新和重置计时器DoRefresh
: 所以我们不尝试GetTheFoo()
如果我们已经在尝试检索一个。我正在使用 System.Threading.Timer
这可能会回调任何 ThreadPool
线程,所以简单地使用标志可能不合适(但也许仍然需要?)Private _syncRoot As New Object
Public Function ForceRefresh() As Foo
Synclock _syncRoot
'Snip ...
End Synclock
End Function
Private Sub DoRefresh()
Synclock _syncRoot
'Snip ...
End Synclock
End Sub
Synclock
在
_syncRoot
两次调用
ForceRefresh
... 现在如果
Synclock
是可重入的,那么嵌套这些将不是问题。
MSDN文档页面似乎暗示了这种情况,但没有明确说明。
最佳答案
SyncLock 语句在后台使用 Monitor.Enter()。 MSDN 库说:
It is legal for the same thread to invoke Enter more than once without it blocking
关于.net - SyncLock 是可重复的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12534467/
vb.Net多线程问题: 有什么区别 SyncLock syncRoot ''# Do Stuff End SyncLock -和- SyncLock Me ''# Do Stuff
我在一个管理自动刷新某些对象的类中有以下代码,它还允许您手动刷新。我想让它成为线程安全的。 Public Function ForceRefresh() As Foo DoRefresh()
假设我有两个对象 a 和 b。 我想在两个对象上同步锁定。 这可行吗?可以通过嵌套的SyncLock语句来完成吗?这样的操作有什么危险? 编辑 也许我应该问,如何通过重构来避免死锁? 最佳答案 嵌套锁
有没有简单的方法来同步锁定一个可以为空的对象? 在您要求之前,是的,我知道对空变量执行 SyncLock 是不合逻辑的。但是,这会简化我的代码,因为现在,我别无选择,只能在调用 SyncLock 之前
我只是想确保我正确理解 SyncLock。鉴于以下代码,是否可以肯定地说这些 block 中的任何一个都不会同时执行?或者可以肯定地说在执行任何这些 block 期间不会执行其他代码?我无法理解 Sy
我有一个模块,我想用它来缓存一些东西。这很简单。我想回避 ConcurrentDictionary,因为它需要有保证的操作。 Public Module SchemaTableCache Pr
我有两个使用延迟加载支持字段的内部属性,并用于多线程应用程序,因此我根据 this MSDN article 实现了双重检查锁定方案。 现在,首先假设这是一个合适的模式,所有的例子都展示了为一个实例创
VB.NET 2010、.NET 4 大家好, 我的问题是,假设我在修改这两个对象的多线程环境中有两个 List(Of T) 对象和一个子例程。我不太了解锁,所以我不确定我是否可以这样做: SyncL
我正在开发一个类库,它将为 CLR 应用程序提供异步通信。 SslStream 上有异步读取 (BeginRead),具有由多个流共享的单个回调例程。我不希望在调试期间并行处理回调,因此我创建了一个关
我创建了一个同步队列,并在调用入队/出队方法时在该队列的 SyncRoot 属性上使用 SyncLock。这些方法是从标准生产者/消费者类的实例中调用的。 这是 SyncRoot 属性的正确使用吗?
我使用了线程管理的服务员。 同步锁 http://msdn.microsoft.com/en-us/library/3a86s51t%28v=vs.71%29.aspx 但是现在,我想要超时并找到了
这是 previous question 的后续关于锁定两个 List(Of T) 对象。那里的答案很有帮助,但给我留下了另一个问题。 假设我有这样的功能: Public Function ListW
假设我有一些代码可以做到这一点: Public Function AppendToLogFile(ByVal s As String) As Boolean Dim success As Bo
我有一个 Public Shared queItems As Queue(Of String) 每当一个线程想要使用 Dequeue 删除并返回队列开头的字符串时,它就会被许多后台线程使用; Publ
我是一名优秀的程序员,十分优秀!