什么是“信号量超时期限”?

5 windows-7 file-transfer

我对信号量超时期间错误有一些个人经验。我能够解决错误,但这仍然让我问,到底什么是“信号量超时期限”?我怎样才能防止它发生?为什么只有在有大量数据传输问题时才会发生这种情况?

DrM*_*pik 5

信号(和互斥锁)是一个同步对象,用于在共享资源的各个进程之间进行通信。例如,如果您有多个线程执行除法检查素数,则您可能希望在每次测试完成后分配不同的除数。

线程需要使用等待函数检查信号量以查看对象是否空闲。然而,为了处理死锁,如果一个线程无法释放信号量,等待函数可以指定一个有限的超时,即您看到的消息。如果传输时间过长,则控制该传输的信号量就会过期。

有关详细信息,请参阅WaitForSingleObject 函数C++ 教程多线程编程

那么,在现实情况下,当通过带宽有限的网络传输大文件时,您会怎么做呢?

  1. 压缩文件(特别是 XML 数据,使用 Zip 压缩约 10:1)。

  2. 将文件分成块(很麻烦,但适用于任何文件类型)。

  3. 提高带宽。例如,我发现 SSH/SFTP在旧服务器上非常慢,但添加 RAM 后,数据传输速度更快。