1

我需要使用多个进程在 C 中实现并发矩阵乘法。我知道因为每个进程都有自己的私有地址空间,我将不得不使用某种形式的进程间通信 (IPC)。我环顾四周,找不到许多不使用线程的实现。我想知道是否有人知道解决此问题的最佳方法,无论是使用共享内存、消息传递还是管道?我不是在寻求解决方案,而是如果有人知道,这些方法中的哪一种对矩阵乘法更有效。或者,如果有一个通用的标准方法可以用多个进程来做到这一点?

4

2 回答 2

1

我认为共享内存将是解决这个问题的好方法。这些进程可以计算它们的解决方案并共享一个内存以将解决方案放在一起。

#include <sys/ipc.h>
#include <sys/shm.h>
int shmget(key_t key, int size, int shmflg);

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

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

我会为此使用信号量:请参阅C 中的信号量和信号量维基百科

于 2012-09-24T17:22:25.960 回答
1

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

于 2012-09-24T17:23:56.477 回答