多进程运算的效能与多线程运算相比慢多少?
公司开发的一光照计算引擎采用了单件模式(就是一个进程只能创建一个引擎实例),现在要把它往
多线程方向应用,具体想法是开辟N个线程,每个线程跑一个引擎实例,然后将要计算的数据(数据
量很大)分成大小相同的N份,交给每个线程的引擎去计算;现在问题出来了,由于引擎采用单件模
式设计,一个进程中只能有一个引擎实例,修改引擎的架构设计已来不及了,所以我想出了用多进程
计算,就是由主进程开辟N个子进程,每个子进程跑一引擎实例,然后由主进程分配计算数据给子进
程,并等待子进程计算完毕的信号通知;我想这么做,但有些问题我还没把握:
- 多进程计算能达到和一进程多线程计算同样的效能吗?(我自己认为是可以的,因为毕竟进程是
由线程组成的,但没把握,所以问问);
- 多进程方案要求进行进程之间的通讯,以及要在进程之间传递大量数据(>10M),我想知道
WINDOWS平台上进程之间传递数据的方法有哪些?哪个效能是最高的?
- 多进程方案的瓶颈是否是在进程之间传递大量数据?此操作是否会造成整体性能的大幅降低?