gpt4 book ai didi

Perl 脚本,使用 fork 还是线程?

转载 作者:行者123 更新时间:2023-12-05 00:05:46 24 4
gpt4 key购买 nike

我正在编写几个 fo 脚本,这些脚本从多个服务器收集数据,数量会增长,并且我会尝试以将来证明我的脚本,但我有点卡住了。

所以首先我有一个脚本,它在 mysql 数据库中查找一个 IP,然后连接到每个服务器,获取一些信息,然后再次将其放入数据库中。

我一直在想的是,这样做的时间是有限的,如果我有 100 台服务器,则需要花费一点时间去每台服务器获取信息,然后将其推送到数据库。所以我考虑过在 perl 中使用 fork 或线程?

在我的情况下,哪个是首选?他有任何例子吗?

谢谢!

编辑:好的,所以需要更多信息:我在 Linux 上运行,我认为我可以让主脚本收集数据库信息,然后发送每个子进程/任务以连接并收集信息,然后将信息推送回来到分贝。

最佳答案

哪个最好取决于您的需求;但是对于它的值(value),这是我的经验:

上次我使用 perl 的线程时,我发现它实际上比 fork 更慢而且对我来说更成问题,因为:

  • 无论如何,线程都会复制所有数据,就像线程一样,但都是预先完成的
  • 线程并不总是在退出时清理复杂的资源;导致缓慢的内存泄漏,这在作为服务器的环境中是 Not Acceptable
  • 几个模块没有干净地处理线程,包括我正在使用的数据库模块,它被严重混淆了。

  • 需要注意的一个陷阱是“forks”库,它模拟“threads”,但使用真正的 fork。我在这里面临的问题是它模仿的许多行为正是我试图摆脱的。我最终使用了经典的老式“fork”并在需要的地方使用套接字进行通信。

    fork 的问题(库,而不是 fork 命令):
  • 还是把数据库系统弄糊涂了
  • 共享变量仍然非常有限
  • 覆盖“fork”命令,导致软件其他地方出现意外行为
  • 关于Perl 脚本,使用 fork 还是线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4204078/

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