我需要写一个写入FIFO的多个进程,我想知道如何在它们之间进行同步,我是否需要编写一些锁,如果是,那么这会很慢,因为进程必须等待另一个进程锁定? 请让我知道实现进程间通信的其他最佳方法是什么?
答案 0 :(得分: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/
另请查看右侧的“相关”问题以获取其他一些重要资源。