我正在设计一个作为网站后端运行的组件。该组件将处理一些AI逻辑,我正在C ++下构建它。如果我让每个会话启动一个新的EXE地址空间,或者EXE将启动并运行并且每个会话将启动一个新线程,那会是最好的吗?
或者是否有更好的建议?
答案 0 :(得分:1)
我最好保持一个进程存活并为每个'session'创建一个新线程:如果你在重负载下寻找好的性能,启动一个新进程(fork,应用程序的初始化等)将真的很慢,可能构成瓶颈。
与此相比,创建新线程(在用户空间中)要轻得多。
更好的是,您还可以保持进程运行,并创建一个线程池。然后'manager'线程将处理新连接,将其分配给现有线程并启动它。在这种情况下,您甚至不需要为每个新连接创建新线程。如果需要,管理器线程可以将现有线程的数量调整为应用程序的负载。
编辑: 这可能很有用:Apache MPM model