perl中的线程与pthread

Jim*_*ing 8 perl multithreading freebsd pthreads

我想知道当我从freebsd的端口源编译perl 5.16(和其他版本)时,选项'THREADS'和'PTHREAD'之间的区别是什么?

PTHREAD是posix-threading吗?(因为-pthread)如果是这样,它是否更喜欢'THREADS'?(因为它似乎是预选的)甚至在freebsd上?那么什么是'THREADS'(内核线程?)?优缺点都有什么?

我可以在一次安装中同时使用吗?这是有意义的吗?

据我所知,与perl结合使用并没有太多东西可以找到.

非常感谢吉米

小智 19

正如其他人所描述的那样使用线程.

与pthread的链接意味着你的perl是使用-pthread标志构建的.这有一个微妙但重要的影响.这意味着当perl启动时,初始化维护线程状态的libc数据.这意味着如果你的perl在一个有线程的库上调用dlopen(),它将正常工作,而不是挂起.

PS.我实际上是编写并向端口提交PTHREAD选项的人.我实际上发现了一些perl模块dlopen()'一些线程库并导致perl挂起.我花了一段时间才弄清楚原因.相信我,你想要PTHREAD选项.我实际上是想删除关闭它的选项.有关详细信息,请参阅FreeBSD PR 163512和163878.我们可能应该将此选项推送到上游,以便perl在FreeBSD上默认使用它.任何可能调用dlopen()的东西都应该用-pthread构建.