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

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

我有一些亲身经历信号量超时错误。我能够解决错误,但我仍然不禁要问,“信号量超时期限”到底是什么?我该如何防止这种情况发生?为什么只有在涉及大量数据传输时才会发生这种情况?

答案1

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

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

有关详细信息,请参阅For more information, seeWaitForSingleObject 函数, 或者C++ 教程 多线程编程

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

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

  2. 将文件分成几块(虽然有点麻烦,但适用于任何文件类型)。

  3. 提高带宽。例如,我发现 SSH/SFTP极其在旧服务器上速度很慢,但当添加 RAM 时,数据传输速度会更快。

答案2

我偶然发现了超时的解决方案——我正在将我的 HD 备份到外部驱动器,但不断收到信号量超时错误,我找到了更改 USB 连接的建议,成功了。问题解决了。

相关内容