
C++有什么好的多进程轮子吗? 对 nginx 不太深入,看介绍 nginx 就是使用的多进程方案,那么 C 艹有什么好的多进程轮子吗? 还是说只能自己手撕轮子。
1 NessajCN 2023-07-26 10:18:30 +08:00 https://github.com/arun11299/cpp-subprocess https://github.com/benman64/subprocess 自己挑着用吧 或者可以用 Qt 的 QProcess ? |
2 ysc3839 2023-07-26 10:35:54 +08:00 via Android 什么需求? |
3 minami 2023-07-26 10:41:39 +08:00 boost |
4 StubbornHuang OP @ysc3839 比如说有一个主进程,外部通过网络协议发送数据给这个主进程,然后主进程将这个请求分发给子进程,然后子进程处理完毕返回结果给客户,这个子进程中有比较耗时的初始化和业务处理操作 |
5 ysc3839 2023-07-26 13:30:35 +08:00 via Android @StubbornHuang 如果子进程跑完就退出的话,似乎不怎么需要轮子,直接用系统 API 启新进程都挺简单的。 如果子进程是一直运行的话,大概可以用 boost interprocess |
6 hankai17 2023-07-26 13:41:46 +08:00 有点儿像 pdns_recursor |
7 StubbornHuang OP @ysc3839 子进程处理完一个请求不会退出,等待主进程继续分配任务 |
8 dynastysea 2023-07-26 13:58:04 +08:00 @StubbornHuang 为啥一定要多进程呢?你这个需求多线程也可以啊 |
9 byasm32 2023-07-26 14:00:45 +08:00 同意楼上。 是 pthread_create 不好用吗。。? |
10 kkkbbb 2023-07-26 14:03:53 +08:00 这不就是 reactor 模式么,进程太重了吧,线程就可以了吧 |
11 StubbornHuang OP @dynastysea 如果并发量大的话,要动态扩展几十个进程数,会不会比在同一个进程中扩展几十个子线程好? |
12 StubbornHuang OP @kkkbbb https://zhuanlan.zhihu.com/p/77265746 ,nginx 是用的多进程异步 |
13 bruce0 2023-07-26 14:20:55 +08:00 子进程的任务是怎么来的 如果是从网络来的, 直接在子进程里监听网络 可以用 `SO_REUSEADDR` 这个特性 让多个子进程 监听同一个端口, 然后各自处理任务就好了 至于怎么开子进程 fork 一个就可以了吧 |
14 StubbornHuang OP @bruce0 学到了,佬 |
15 dynastysea 2023-07-26 16:05:34 +08:00 @StubbornHuang 明显是线程更好啊,进程代价太大了 |