我正在使用Fiddle为一些繁重的线性代数计算(Mac OSX)调用外部 C 函数。
模块定义看起来像
module BLAS
extend Fiddle::Importer
dlload $BLAS_PATH
extern 'void cblas_dgemm(int, int, int, int, int, int, double, double*, int, double*, int, double, double*, int)'
extern 'void cblas_dgemv(int, int, int, int, double, double*, int, double*, int, double, double*, int)'
.......
这些库已针对 mac osx 进行了优化,可以使用所有可用的内核。不幸的是,当我使用 Fiddle 从 Ruby 调用这些函数时,只使用了一个核心,我的理解是,这是因为GIL
.
有没有办法在外部函数执行过程中释放锁?
我正在使用ruby 2.0.0-p247
(不是系统 Ruby)。