gpt4 book ai didi

multithreading - perl 中的线程与 pthread

转载 作者:行者123 更新时间:2023-12-04 05:13:36 25 4
gpt4 key购买 nike

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

PTHREAD 是 posix 线程吗? (因为-pthread)如果是这样,它是否更喜欢“线程”? (因为它似乎是预先选择的)即使在freebsd上?另一方面,什么是“线程”(内核线程?)?优缺点都有什么?

我可以在一个安装中同时使用两者吗?有道理吗?

据我所知,与 perl 结合使用的东西并不多。

多谢
吉米

最佳答案

当然,使用线程就像其他人所描述的那样。

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

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

关于multithreading - perl 中的线程与 pthread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13587325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com