c - 多进程和多线程设计

标签 c networking

父进程预 fork 了一些进程,每个预 fork 进程创建了一定数量的线程(线程池)。同一地址空间中的所有线程都可以共享数据,并且可以对临界区使用不同的同步技术。我想知道如何在来自不同地址空间的线程之间进行同步。我最初的想法(我可能是错的)是使用共享内存并使用信号量进行同步。这种设计会增加两个信号量/互斥量的使用。

有没有更好的设计来克服这个问题?。我知道 apache 2.0 使用混合多进程和多线程服务器设计。如果我对混合方法有一些框架代码想法,那将很有帮助。我更关注可扩展性和健壮性。

最佳答案

我通常坚持一个或另一个——fork,并使用进程间 IPC(共享内存、管道、套接字等)或线程,并通过内存结构进行通信。除非混合 fork 和线程会给您带来好处,否则我建议您选择一个并使用它运行。

关于c - 多进程和多线程设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1877950/

相关文章:

C - char 数组的内容意外更改

ios - 快速IOS联系人攻略 "friend finder"

Java - 无线 API

javascript - WebSocket TCP 数据包聚集在一起?

ruby - 在 Ruby on Rails 中获取主机名或 IP

c - 从 argv[] 参数转换为 uint16_t 时出现问题

c++ - 带有原始音频记录和回放示例的跨平台 C/C++ 库

c - realloc 似乎没有重新分配内存

c - 从用户空间管理虚拟内存

python - Docker:使用容器名称从一个容器连接到另一个容器时,如何修复 "could not translate host name "postgres“到地址”?