使用fork()和IPC在C中进行最有效的矩阵乘法

我需要使用多个进程在C中实现并发矩阵乘法。 我理解,因为每个进程都有自己的私有地址空间,我将不得不使用某种forms的进程间通信(IPC)。 我做了一些环顾四周,找不到许多不使用线程的实现。 我想知道是否有人知道最好的方法,使用共享内存,消息传递或管道? 我不是要求解决方案,而是,如果有人知道,这些方法中的哪一种在矩阵乘法中会更有效。 或者,如果有一个通用的标准方法来执行多个流程?

同时处理矩阵乘法的最有效方式是共享存储器。 这样,您不必通过管道/消息序列化矩阵,并且可以直接在共享内存空间上应用乘法。

我认为, 共享内存将是解决这个问题的一个很好的解决方案。 这些流程可以计算其解决方案并共享一个内存以将解决方案整合在一起。

#include  #include  int shmget(key_t key, int size, int shmflg); 

是共享内存的C函数之一(你需要shmat() ,也可能需要shmdt()shmctl() )。

此外,您必须关心同步,以便进程不会相互操作计算。

我会使用信号量 : 在C和信号量维基百科中查看信号 量