![]() |
1
2
如果一个文件被许多进程共享,那么有时锁定整个文件是不现实的(出于性能原因)。 在这种情况下,您可以在写入文件时锁定文件的某个区域。
在Windows中,您可以使用该函数
LockFile()
.
|
![]() |
2
1
我冒险猜测…它可以用于并行计算。假设有两个线程执行一些高度可并行的计算,并且需要将数据写入单个文件。您还可以预先确定存储每个线程的输出所需的大小(比如50MB)。 因此,分配一个100MB文件,让线程1从偏移量0开始写入,线程2从50MB开始写入。当线程完成时,您将拥有一个组合文件(否则,使用单独的文件,您需要将线程2的结果附加到线程1)。 ASCII艺术尝试
尽管如此,我从未这么做过。它甚至可能不起作用!可以想象,您可以使用其他同步机制在线程之间共享文件句柄/流,但随后还必须重置每个线程上的偏移量。也许其中一个效率更高。 一方面,如果两个线程总是同时写入,则可能会出现大量磁盘抖动。相反,如果写锁上存在大量争用,同步写操作可能会抵消并发性的好处。正如人们常说的,做个侧面的测试! 无论如何,我也很好奇一个“现实生活”的场景,在这个场景中,共享的写访问已经被使用,并且将关注更多的答案! |
![]() |
3
1
低于文件I/O级别的套接字。 假设一个服务器监听某个本地端口1999,并将入站中继到服务端口3128上的所有订阅客户机。 服务器可以从多个本地客户机读取数据并中继到多个远程客户机。如果服务器是身份验证守护程序,多个本地应用程序可能会尝试通过同一服务器(服务)进行身份验证。可以通知远程客户端user-x现在已通过身份验证,因为s/he已成功登录到某个应用程序共享身份验证服务器。 我不知道我在说什么。我在大胆猜测。 |
![]() |
Tristan · 如何在写入数据后打开txt文件? 6 年前 |
![]() |
Adam Hanek · 从命令创建文件夹并打印到文本文件 6 年前 |
![]() |
SoSo · 如何打开具有部分名称的文件并在c#[关闭]中读取其行 7 年前 |
![]() |
O. Schultz · 如何逐行提取特定关键字,然后声明为变量 7 年前 |
![]() |
thatsHeavyDoc · 缓冲区清除-输出不符合预期 7 年前 |