gpt4 book ai didi

c - 使用 System V 的共享内存 IPC 的 Posix 线程

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:17:26 29 4
gpt4 key购买 nike

我正在编写客户端和服务器程序来演示客户端和服务器进程之间的 IPC。例如,客户端线程可以向服务器发送数据(在本例中使用 System V 共享内存段完成)。创建共享内存段的选择是:system v 和 posix 共享内存命令)。

在我们目前创建的设置中,客户端只向服务器发送一个请求,服务器将计算值返回给客户端。但是,我想模拟从客户端创建多个请求,因此想生成多个线程,每个线程创建一个共享内存段,服务器访问该内存段并存储该值。

回到主要问题,快速搜索如何在 linux 环境中使用线程 link (Ubuntu 16.04 Kernel: 4.13.0-36-generic) 表明我们可以使用 pthreads。使用 pthreads(代表 POSIX 线程)会以任何方式影响内存段的使用吗?是否有任何我应该注意的不兼容性?

编辑:问题不在于如何设计这样一个系统,而是要更多地了解启动内存段的线程安全性。两段描述是为了给问题提供一些背景信息。

最佳答案

您必须注意不要混淆进程内通信 (IPC) 和进程间通信。 SysV 和 Posix Shared Memory 指的是前者(进程之间的通信),Posix Threads 指的是后者(使用多线程的进程内的通信/同步)。

也就是说,假设您的客户端和服务器是独立的进程(不是进程中的线程),使用 posix-threads 让您的服务器能够处理多个进程是合理的一次请求,但使用 IPC 在客户端和服务器之间来回传递请求和响应。

在不知道有关您的问题的更多详细信息的情况下,处理此问题的首要方法是创建一个线程池,其中每个线程负责处理 来自单个客户端的信息。单个服务器线程可以负责服务所有客户端请求,将它们卸载到单独的工作线程以进行处理,然后检索答案以发送回客户端。这种方法可以很好地将 IPC 工作与多线程处理分开。

关于c - 使用 System V 的共享内存 IPC 的 Posix 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49014782/

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