gpt4 book ai didi

perl - 如何在 Perl 中的线程之间共享文件句柄?

转载 作者:可可西里 更新时间:2023-11-01 16:13:47 26 4
gpt4 key购买 nike

我有两个线程,

一个使用 HTTP::Daemon 运行循环,另一个运行基于 IO::Select 的套接字服务器。

现在,当用户连接到 HTTP 服务时,它需要写入套接字服务器的客户端。

但是,在 Perl 中,我不能与 threads::shared 共享文件句柄。

有什么建议吗?

最佳答案

文件描述符 对进程是全局的,您可以使用fileno 取消引用文件句柄到它的描述符。然后只需在线程之间传递简单的标量值并按数字重新打开即可。

在您的 HTTP::Daemon 线程中:

my $fileno = fileno $fh; 

通过您的程序使用的任何方式(例如共享数组)将数字传递给 IO::Select 线程。并在 IO::Select 线程中按编号重新打开句柄:

open my $fh, "&=$fileno";

关于perl - 如何在 Perl 中的线程之间共享文件句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28316517/

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