fork和threads到底各有什么特点?

fork和threads到底各有什么特点?

最近在研究perl多线程,发现5.8之前perl只有多进程,也就是fork,5.8之后有了threads,想问下大家,什么时候用fork好,什么情况下用threads好,并且哪种占用的资源多?
还有$thread1->detach();
调用这个方法,与不调用它,让线程自然结束有什么区别?

我所了解的是,这个方面只是让线程停掉。
本人理解:
        当然是进程 fork占用的资源多啦,fork理论上来说是copy了一个和父进程一样的进程,也就是说:copy了一份父进程的,代码段,栈段,数据端,等,而线程就不一样了,并不是像fork那样copy了,而是共享了比如父亲的数据端了,当然是线程比较节省资源啦,
     不知道对不对,请指教,呵呵


QUOTE:
原帖由 a_789_123 于 2008-7-21 15:59 发表
本人理解:
        当然是进程 fork占用的资源多啦,fork理论上来说是copy了一个和父进程一样的进程,也就是说:copy了一份父进程的,代码段,栈段,数据端,等,而线程就不一样了,并不是像fork那样copy了, ...

我也觉得是这样,现在我在考虑一个问题,就是安全性。perl的多线程如何保证它的安全性,java里可以synchronize,perl怎么办?