日期:2014-05-17  浏览次数:20757 次

并行调用dll的问题
请教各位,我现在有一个算法用matlab封装成dll,但是执行速度太慢,所以想去并行调用此dll,但是用parallel.for执行时每次运行到调用dll时却变成顺序执行,请问是哪里出现了问题。
  网上查找了资料一个进程里只能调用一个dll副本,然后多线程共享此副本,是不是这个原因?有什么办法去实现并行调用dll文件呢?请不吝赐教

------解决方案--------------------
取决于dll中的函数是否是线程安全的,很有可能不是,所以没办法并行调用,你可以尝试使用多个进程,并且用某种机制实现进程的同步和通讯,比如rpc、管道、互斥等等,进程的通信成本比较高,但是如果你的确有大量数据的话,还是可以考虑一试的。
------解决方案--------------------
多线程就可以并行了,可能是你的dll内部做了同步限制,只能单线程运行,