我有两个主题,
一个运行带有HTTP :: Daemon的循环,另一个运行基于IO :: Select的套接字服务器。
现在,当用户连接到HTTP服务时,它需要写入套接字服务器的客户端。
但是,在Perl中,我无法与threads::shared
共享文件句柄。
有什么建议吗?
答案 0 :(得分:2)
文件描述符是进程的全局,您可以使用fileno
将文件句柄取消引用到其描述符。然后,它只是在线程之间传递这个简单的标量值并按数字重新打开。
在HTTP::Daemon
帖子中:
my $fileno = fileno $fh;
通过程序正在使用的任何方式将数字传递给IO::Select
线程(例如共享数组)。并在IO::Select
主题中按编号重新打开句柄:
open my $fh, "&=$fileno";