![]() |
1
12
如注释所示,一种方法是拥有一个固定的锁池(比如32),并使用ID模块32来确定要使用哪个锁。这将导致一些错误的锁共享。32是从空气中选择的数字-这取决于您的ID值分布、消费者数量等。 |
![]() |
2
2
你能让你的ID对每个对象都是唯一的吗?如果是这样,您可以对对象本身应用一个锁。 |
![]() |
3
2
编辑:我没有仔细阅读,这是关于(大量)创建的助手对象。
关于
不,坏主意。你可以锁上一根绳子,但是你得担心它们会被关在什么地方。很难确定它们是独一无二的。 |
![]() |
4
0
我将把一个同步的FIFO队列看作是一个单独的类/单例,用于所有生成的对象——生产者将对象排队,消费者排队——因此实际的对象不再需要任何同步。然后在实际对象之外进行同步。 |
![]() |
5
0
如何从ID对象池分配ID并锁定这些对象? 创建项目时:
ID池创建和维护共享ID实例:
然后锁定ID,该ID现在是consume方法中的引用:
这不是最佳解决方案,只会将问题转移到另一个地方——但是如果您认为您对锁有压力,那么使用这种方法可能会提高性能(例如,您的对象是在单个线程上创建的,那么您不需要同步ID池)。 |
![]() |
6
0
见 How to: Synchronize a Producer and a Consumer Thread (C# Programming Guide)
--编辑—— 一 simple code snippet 我有时会回信,看看这是否有帮助。我想这就是伟人所指的? --编辑—— 下面怎么样?
现在,当您检查以下内容时
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 6 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 6 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 6 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 6 月前 |