我想知道当我从freebsd的端口源编译perl 5.16(以及其他版本)时,选项'THREADS'和'PTHREAD'之间的区别是什么?
PTHREAD是posix-threading吗? (因为-pthread)如果是这样,它是否更喜欢'THREADS'? (因为它似乎是预选的)甚至在freebsd上?那么什么是'THREADS'(内核线程?)?有什么优点和缺点?
我可以在一次安装中使用两者吗?它有意义吗?
据我所知,与perl结合使用并没有太多东西可以找到。
非常感谢 麦
答案 0 :(得分:18)
正如其他人所描述的那样使用线程。
与pthread的链接意味着你的perl是使用-pthread标志构建的。这有一个微妙但重要的影响。这意味着当perl启动时,初始化维护线程状态的libc数据。这意味着如果你的perl在一个有线程的库上调用dlopen(),它将正常工作,而不是挂起。
PS。我实际上是编写并向端口提交PTHREAD选项的人。我实际上发现了一些perl模块dlopen()'一些线程库并导致perl挂起。我花了一段时间才弄清楚原因。相信我,你想要PTHREAD选项。我实际上是想删除关闭它的选项。有关详细信息,请参阅FreeBSD PR 163512和163878.我们可能应该将此选项推送到上游,以便perl在FreeBSD上默认使用它。任何可以调用dlopen()的东西都应该用-pthread构建。