我需要写入多个进程写入FIFO,我想知道如何在它们之间进行同步,是否需要写入一些锁,如果是的话那么会因为进程缓慢等待另一方解锁? 请让我知道什么是实现进程间通信的其他最佳方式?多进程读/写fifo
0
A
回答
2
"do I need to write some lock"
好吧,可能是的。如果你正在使用共享内存(pthreads,openmp),那么你需要有一些读写锁来防止竞争条件,数据无效等。如果你正在使用分布式内存,那么你会想要考虑一些减少操作以将所有数据集中到一个地方。
"if yes then would that be slow as a process has to wait for the other to free the lock?"
这取决于你,程序员。编写速度慢,效率低下的程序很容易,但需要一些时间来提高程序执行速度,速度等等。我可能还会补充说,如果您认为性能瓶颈应该不是实际发生的地方。使用调试器和性能分析器成为最好的朋友是个好主意。
这里有一些资源可以帮助您入门,我建议您做研究,编写代码并提出具体问题以获得更好的帮助。
https://computing.llnl.gov/tutorials/pthreads/
https://computing.llnl.gov/tutorials/openMP/
https://computing.llnl.gov/tutorials/mpi/
还检查了 '相关' 的问题,以正确的其它一些重要的资源。
相关问题
- 1. pthread读写锁定FIFO?
- 2. 从FIFO读取/写入
- 3. 读取或写入多进程csv
- 4. 从Python程序写入FIFO
- 5. 实现与为ByteArray FIFO的从FIFO读而FIFO仍然被写入
- 6. FIFO - 从顶级过程读取,从底层过程写入
- 7. FIFO文件和读取/写入
- 8. 在C中读/写struct到fifo
- 9. 写入/读取/从FIFO文件 - linux
- 10. Pipe,Fifo,读取()和写入()函数
- 11. FIFO上的多个读写器(命名管道)
- 12. 多模块读取相同的fifo
- 13. 无法从多个FIFO中读取
- 14. 使用线程的FIFO进程调度
- 15. fifo - 循环读取
- 16. 从FIFO读取C
- 17. 从node.js写入fifo
- 18. UNIX FIFO:如何仅允许一个写入器/读取器对使用FIFO?
- 19. 写入python多进程的stdin。进程
- 20. 拒绝“权限”,在一个非特权子进程从过程替代FIFO读
- 21. MySQL多个进程写入
- 22. 从FIFO读取数据(linux)
- 23. 在linux中:写入FIFO
- 24. 用c写入FIFO文件
- 25. 写入FIFO(命名管道)
- 26. 多个子进程在同一管道上读取/写入
- 27. 读取/写入多个启动的进程命令行
- 28. 读取和写入进程I/O?
- 29. 阅读/写入Popen()子进程
- 30. 从其他进程读取和写入
您需要更详细地描述您的方案。一个特别的问题是“每封邮件有多大”。如果它小于FIFO缓冲区的大小(并且用'write()'的单个调用写入),则每个消息都是原子的,而不管有多少个进程正在使用FIFO。您还需要描述一下写作过程是否会全部打开FIFO并在完成之前保持打开状态,或者他们是否打开并关闭每条消息。数据是只传到“服务器”,还是服务器要回复?如果服务器将回复,它将如何回复? –
使用套接字可能会更好;每个套接字将是客户端和服务器之间的双向连接。我假设你有一个中央服务器进程,而不是一些随机交互的程序集合,但是你的额外描述也应该解释“进程几何”。 –
我怎样才能知道FIFO缓冲区的大小,最多500K的消息,这个大小是可配置的。所以我想到的是有一个FIFO,多个进程将写入它,一个进程将读取它并将其内容发送到网络。 –