gpt4 book ai didi

multithreading - 具有IPC和线程的Actor系统

转载 作者:行者123 更新时间:2023-12-03 13:18:45 24 4
gpt4 key购买 nike

我说对了吗?如果我的操作系统带有IPC(进程间通信)和线程,则可以简单地将其用作参与者模型。因此,我使用IPC发送和接收消息,并以线程的形式启动新角色(实际上是进程,因为我不共享内存)。还是我错过了actor模型为了符合需求而需要的某些功能?

  • Actor 需要一个地址:PID
  • 向其他参与者发送消息:IPC
  • 创建新角色:处理
  • 最佳答案

    确实有可能:正如您所说的,所有构件都在那里。

    不过,这似乎不太适合:在参与者模型中进行编程时,通常会创建许多参与者,因此参与者应该是“便宜的”。不幸的是,在大多数操作系统上,进程并不便宜:

  • 首先,在典型的系统上,PID的数量受到限制。现在您可以增加pid_max来解决这个问题,但这已经表明您可能误用了此工具
  • 一个进程可能会具有某种状态,因此它需要一些内存页才能存储该状态。即使有了进程之间的智能写时复制技巧,在一个进程中拥有许多参与者也比拥有一个进程具有更高的效率。每个参与者一个进程(除非您开始跨进程共享内存,但是您提到自己不想这样做,并且确实似乎很难保证安全)
  • 进程太多,意味着内核调度程序必须对它们全部进行调度。我会担心它是否会被淹没:这将是一个非常不寻常的工作量,典型的调度程序可能没有针对其进行优化。传统的参与者系统不每个参与者使用一个线程,而是“内部”跟踪消息队列,并使用有限数量的线程来服务所有参与者。只要参与者不阻塞线程,并且线程数接近CPU数,这将非常有效。
  • 故障处理(如果一个进程崩溃了怎么办?)似乎很难处理整个进程

  • 总而言之,这是有可能的,但是我不确定这是一个好主意。看看它在尝试时如何发挥作用会很有趣!

    关于multithreading - 具有IPC和线程的Actor系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58776248/

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