我正在尝试使用Perl创建一个并行处理的Web服务器。
监听不是一个纯套接字,因此没有文件句柄,它是实现HTTP服务器(GLOB)的对象。
在接受连接后,我再次为客户端连接获取一个GLOB。
由于GLOB,我无法通过thead::shared将其传递给工作线程。
我可以动态创建线程并通过参数将其传递给它们。但是创建线程对性能不利,因此我希望有一个固定的等待工作者池。
那么如何以一种优雅的方式将GLOB传递给已经运行的线程?序列化到DB、文件、IPC等都不高效。
当然,我可以进行大型重构(fork、IPC、套接字等),但这不是问题的关键。
谢谢!
threads
文档中可以看出:“Perl提供的“基于解释器的线程”并不是人们期望或希望的快速轻量级多任务处理系统。线程的实现方式使它们容易被误用。很少有人知道如何正确使用它们或能够提供帮助。在perl中使用基于解释器的线程是官方不鼓励的。” - amon