1

我需要编写一个写入 FIFO 的多个进程,我想知道如何在它们之间同步,我是否需要写一些锁,如果是,那么这会很慢,因为一个进程必须等待另一个进程释放锁? 请让我知道实现进程间通信的其他最佳方法是什么?

4

1 回答 1

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/

另请查看右侧的“相关”问题以获取其他一些重要资源。

于 2012-05-10T03:10:25.183 回答