问题标签 [synclock]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
vb.net - 为什么 SyncLock 在这里不起作用?
我正在开发一个类库,它将为 CLR 应用程序提供异步通信。
SslStream 上存在异步读取 (BeginRead),具有多个流共享的单个回调例程。我不希望在调试期间并行处理回调,所以我创建了一个关键部分:
令我惊讶的是,这不起作用,至少当我在 SyncLock 块中设置断点时不起作用。多个流的回调同时在其中运行,无需在入口点等待前一个线程离开它。
单步执行是一场噩梦,尤其是当流同时被关闭(关闭)时:为流 1 执行行,为流 2 执行行,为 1 执行下一行,为 2 执行下一行,依此类推,贯穿整个堵塞。
我想也许你需要的不仅仅是一个通用的“新对象”,但后来我看到这里至少有一个关于堆栈溢出的答案,它说明了 SyncLock 正是我使用它的方式,只有“静态 X 作为新对象”在必须锁定的函数中创建同步对象。
是不是因为回调实际上来自 .Net 框架之外的 win32 线程,所以 SyncLock 在这里不起作用?
vb.net - Synclock 是锁定对象引用还是对象本身?
标题确实说明了一切,但我提供了一些代码来演示我的要求。
这两个'Some code here
s 是否会同时运行(假设它们在单独的线程上)?
vb.net - SyncLock 在单元测试中不起作用
我有一个Module
我想用来缓存一些东西的东西。这很简单。我想回避,ConcurrentDictionary
因为它需要有保证的操作。
事情就是这样。我有一些单元测试来测试利用该HasColumn
功能的代码。我像这样设置这些测试:
然后他们测试这个功能:
你可以在这里看到我点击该HasColumn
方法的地方。事情就是这样。如果我单独执行这些测试,它们会成功;但是,如果我执行整个测试集,它们就会失败。
显然这里存在线程安全问题,但我无法终生弄清楚我做错了什么。有人可以帮我看看我哪里出错了吗?
测试失败时的输出是:
测试成功时的输出是:
.net - 如果在 VB.Net 中的块内调用函数,SyncLock 将失去锁定
我已经在 VB.2010 和 2019 中尝试过。这是一个 Windows 桌面应用程序。
它有一个 FileSystemWatcher 创建例程,该例程可以控制何时将文件放入文件夹,然后通过调用的函数处理该文件。调用的函数必须是同步的,如果调用多个实例会出现不可预知的问题。
问题是一旦调用函数(DoMonitorFolder),锁就会丢失,同步锁块将在第一个块完成之前再次进入。
简化代码如下。有了断点,我已经看到:
- 如果文件夹中有多个文件,则在第二次到达 End Synclock 之前进入该块。断点放在 SyncLock 之后和 End SyncLock 上
- 第二次进入时,RunningFileNowBol 为真。它在输入时在 DoFolderMonitor 中设置为 true,在返回之前设置为 false。
- 如果取出 DoFolderMonitor,则仅在 End Synclock 执行后才进入 Synclock 块,这是我所期望的。
那么在块中嵌入函数调用是否有限制?是否有替代方法可以同步从 FSW.Created 调用 DoFolderMonitor?
vb.net - 如何正确使用同步锁一次只允许调用一个函数
我有向一批计算机发送 ping 的代码,并向任何响应他们在线的人打开 VNC 会话。
ping 在 parallel.foreach 循环中发送,并在收到回复时引发事件。
尽管在 AddHost 代码周围放置了一个同步锁块,但它仍然被多个线程同时输入。
我认为这与另一个对象上的 raiseevent 调用的代码有关。
这是处理事件的方法
从对象 OnlineFinder.vb
我应该怎么做,所以一次只处理一个事件(但它不会挂起 UI)