我在Windows 7嵌入式环境中工作,在加载完所有内容后,剩下的资源非常少。
客户端(win7 Embedded)可以向服务器发送大约8种不同的消息类型,但其中只有2种是非常重要的(必须在任何网络中断后发送)。如果发送失败,我将另外6条消息设置为重试约30秒。
我关心的是如何在内存中保存这些消息。到目前为止,我的两个想法是:
1)让消息试图发送的线程处于睡眠状态,直到网络连接恢复(这可能导致很多线程处于睡眠状态,例如,网络中断了几天)。
2)写入无法发送到文件的消息,然后刷新文件并在连接恢复后发送每条消息。
我想知道的是如果方法1会导致太多的开销,如果说50个线程处于"睡眠"状态?
如果是的话,我应该选择选项2吗?
也许还有另一个更聪明的选择,我还没有考虑过。
其中2个非常重要
如果是这种情况,您可能不应该依赖于将消息留在内存中,特别是考虑到
如果,比如说,网络坏了好几天
如果有电源丢失或其他重启/故障,消息将丢失,如果在RAM中。
我建议将消息序列化到持久存储(例如磁盘)。当您检测到网络连接已恢复时,请检查是否有序列化的消息,然后发送它们。请确保在从磁盘删除之前传输了消息(以防在您第一次检测到它启动后网络再次出现故障,但在发送消息之前)。