父进程预 fork 了一些进程,每个预 fork 进程创建了一定数量的线程(线程池)。同一地址空间中的所有线程都可以共享数据,并且可以对临界区使用不同的同步技术。我想知道如何在来自不同地址空间的线程之间进行同步。我最初的想法(我可能是错的)是使用共享内存并使用信号量进行同步。这种设计会增加两个信号量/互斥量的使用。
有没有更好的设计来克服这个问题?。我知道 apache 2.0 使用混合多进程和多线程服务器设计。如果我对混合方法有一些框架代码想法,那将很有帮助。我更关注可扩展性和健壮性。
最佳答案
我通常坚持一个或另一个——fork,并使用进程间 IPC(共享内存、管道、套接字等)或线程,并通过内存结构进行通信。除非混合 fork 和线程会给您带来好处,否则我建议您选择一个并使用它运行。
关于c - 多进程和多线程设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1877950/