|
|
1
19
此锁将允许1个写入器独占访问或N个(可能很大,但您必须定义)读取器并发访问。 这是它的工作原理。我将以10位读者为例。 初始化一个最初没有信号的命名互斥体和一个有10个槽位的命名信号量:
获取读卡器锁:
松开读卡器锁:
虽然很脆弱(使用此方法的每个进程的信号量计数最好都是相同的!),但我认为只要你不太努力,它就会做你想做的事情。 |
|
|
2
1
Jim Mischel's fine answer ,但我认为通过避免使用Thread可以提高性能。Sleep(),避免多个读取器试图同时获取时的锁争用! 初始化
|
|
|
3
1
这个怎么样?不要提供文件。提供 文件。当你需要进行更改时,创建一个新文件,并从那时起提供一份副本。 |
|
|
4
1
您可以使用服务来提供文件。这解决了两个问题。首先,正如您所述,并发性问题。此外,即使您可以实现同步,如果您开始负载平衡,它也会变得更加困难和丑陋。使用服务提供文件可能会降低性能,但可以解决同步问题。 |
|
|
JLosc · Powershell脚本因文件锁定而失败 2 年前 |
|
|
Sriram Umapthy · PostgreSql行级锁 2 年前 |
|
|
a a · 为什么在这个可重入锁示例中需要引用计数? 4 年前 |
|
|
JohnLBevan · 为什么原子语句上需要锁提示? 8 年前 |