在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
很多时候使用perl多线程可以达到很不错的效果,可以节约很多时间完成很复杂的工作。但通过perl threads模块的描述文件可以看到,它也有很多缺点。比如说在使用perl多线程的时候,必须的保证所有引用的模块都是支持thread。而在实际应用中,我们很难做到这样。比如我们要多线程,但同时要应用OLE模块去操作activex。 此用例应该是一种很常见的用例。那是不是意味着此时我们不得不放弃使用多线程呢。 非也, 本文介绍一种可以使用多线程和ole的例子。 在http://www.cpan.org/官方网站上对这种情况给出的方案是: If the module will only be used inside a thread, you can try loading the module from inside the thread entry point function using sub thr_func { require Unsafe::Module # Unsafe::Module->import(...); .... } If the module is needed inside the main thread, try modifying your application so that the module is loaded (again using 再次,主要讨论一下第二种情况,既主要是该非thread模块放到方法中引用。下面是一个demo。
$var;
}
在此例子中,用到了queue,它的作用是将非thread 安全的数据通过管道传输,这样能避免他们互相调用。 |
请发表评论