【发布时间】:2009-10-01 08:16:01
【问题描述】:
我很头疼,但找不到解决方案。请考虑这种情况:
我有写入器想要将非阻塞“队列”写入本地网络上的另一台机器,并且有一个读取器将读取数据(如果没有写入器,则为阻塞模式)并执行一些工作 A,然后返回一个小时,然后获取下一个数据。
所以场景是这样的:
- 作家写
- 作家写
- 作家写
- 作家写
- 作家写
-
读者阅读并完成工作
在阅读器忙碌的同时:
- 作家写
- 作家写
- 作家写
- 作家写
- 作家写
- 等等...
我认为我可以使用 tcp 守护进程作为读取器来执行此操作,但这意味着它会与 fork(s) 同时运行,并且我希望读取器一次处理一个,因为它会做 cpu 饥饿的工作.
我曾想过让 tcp 服务器获取请求,然后向 FIFO 发出信号,并让另一个守护程序从 FIFO 中读取,但它具有相同的限制。
我的意思是 FIFO 必须在写入器写入时读取,并且我希望写入器的写入速度比读取器快很多倍。
一个 db 解决方案可以,但是 a) 它不是很快,b) 读者没有锁定..我不想用 sleep(x) 来实现它,这似乎不是一个好的编程技术.
有什么解决办法吗?
【问题讨论】: