2009年5月31日星期日

[PerlChina] Re: 请问如何在AUTOLOAD里得到方法名?

有个小错误。 fork产生的进程不是线程 :P
如果我没有记错的话fork是posix的一部分。 
在unix/linux中 fork直接对应 fork这个系统调用。
而在windows中没有这么个系统调用。 
虽然perl在windows平台也提供了fork()函数 但有些行为与linux平台上的不一致。 直接拿到windows上难保不出问题。

2009/6/1 agentzh <agentzh@gmail.com>
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 访问该论坛

-~----------~----~----~----~------~----~------~--~---

没有评论: