多谢,在threads的perldoc里发现这么一段:
DESCRIPTION
Perl 5.6 introduced something called interpreter threads. Interpreter threads are different from 5005threads (the thread model of Perl 5.005) by creating a new Perl interpreter per thread, and not sharing any data or state between threads by default.
看来的确还是用进程比较稳妥一点
________________________________________
From: perlchina@googlegroups.com [mailto:perlchina@googlegroups.com] On Behalf Of agentzh
Sent: Monday, June 01, 2009 10:27 AM
To: perlchina@googlegroups.com
Subject: [PerlChina] Re: 请问如何在AUTOLOAD里得到方法名?
2009/6/1 Luo, Yong <Yong.Luo@acs-inc.com>
现在担心的是如果这个类在多线程环境下跑的话,在一个线程里取到的$AUTOLOAD可能已经被另一个线程改变了,请问有没有方法能避免这个啊?是不是只能自己写同步代码?
会么?perl 线程是"解释器线程",原理上讲,不同的线程等于有自己独立的解释器,因此也会有独立的整套全局变量等等。相反,如果想在多"线程"间共享反而是需要显式指定的,比如 shared 变量。
一句题外话是,我们总是尽量避免使用 perl 的线程,呵呵,比如我们的用到了 fork 的应用,到了 Win32 上用 perl 线程一模拟就变得很不稳定了,呵呵。
Cheers,
-agentzh
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---
没有评论:
发表评论