Posix 使用 System V 的共享内存 IPC 线程
Posix Threads for shared memory IPC using System V
我正在编写客户端和服务器程序来演示客户端和服务器进程之间的 IPC。例如,客户端线程可以向服务器发送数据(在本例中使用 System V 共享内存段完成)。创建共享内存段的选择是:系统 v 和 posix 共享内存命令)。
在我们目前创建的设置中,客户端仅向服务器发送一个请求,服务器向该服务器 returns 将计算值发送给客户端。但是,我想模拟从客户端创建多个请求,因此想生成多个线程,每个线程创建一个共享内存段,服务器访问该内存段并存储该值。
来到主要问题,快速搜索如何在 linux 环境中使用线程 link (Ubuntu 16.04 Kernel: 4.13.0-36-generic) 显示我们可以使用 pthreads 来做同样的事情。使用 pthreads(代表 POSIX 线程)会以任何方式影响内存段的使用吗?是否有任何我应该注意的不兼容性?
编辑:问题不在于如何设计这样的系统,而是要更多地了解启动内存段的线程安全性。两段描述是为了给问题提供一些背景信息。
您必须注意不要混淆 Intra-Process-Communication (IPC) 和 Inter-Process-Communication。 SysV和Posix Shared Memory指的是前者(进程间通信),Posix Threads指的是后者(communication/synchronization进程内使用多线程)。
就是说,假设您的客户端和服务器是分开的 进程 (不是进程中的线程),使用 posix-threads 是合理的服务器能够一次处理多个请求,但使用 IPC 在客户端和服务器之间来回通信请求和响应。
在不知道有关您的问题的更多详细信息的情况下,处理此问题的首要方法是创建一个 thread-pool,其中每个线程负责 处理 来自单个客户。单个服务器线程可以负责 服务 所有客户端请求,将它们卸载到单独的工作线程以进行 处理 ,然后检索要发回的答案给客户。这种方法可以很好地将 IPC 工作与 multi-threaded 处理分开。
我正在编写客户端和服务器程序来演示客户端和服务器进程之间的 IPC。例如,客户端线程可以向服务器发送数据(在本例中使用 System V 共享内存段完成)。创建共享内存段的选择是:系统 v 和 posix 共享内存命令)。
在我们目前创建的设置中,客户端仅向服务器发送一个请求,服务器向该服务器 returns 将计算值发送给客户端。但是,我想模拟从客户端创建多个请求,因此想生成多个线程,每个线程创建一个共享内存段,服务器访问该内存段并存储该值。
来到主要问题,快速搜索如何在 linux 环境中使用线程 link (Ubuntu 16.04 Kernel: 4.13.0-36-generic) 显示我们可以使用 pthreads 来做同样的事情。使用 pthreads(代表 POSIX 线程)会以任何方式影响内存段的使用吗?是否有任何我应该注意的不兼容性?
编辑:问题不在于如何设计这样的系统,而是要更多地了解启动内存段的线程安全性。两段描述是为了给问题提供一些背景信息。
您必须注意不要混淆 Intra-Process-Communication (IPC) 和 Inter-Process-Communication。 SysV和Posix Shared Memory指的是前者(进程间通信),Posix Threads指的是后者(communication/synchronization进程内使用多线程)。
就是说,假设您的客户端和服务器是分开的 进程 (不是进程中的线程),使用 posix-threads 是合理的服务器能够一次处理多个请求,但使用 IPC 在客户端和服务器之间来回通信请求和响应。
在不知道有关您的问题的更多详细信息的情况下,处理此问题的首要方法是创建一个 thread-pool,其中每个线程负责 处理 来自单个客户。单个服务器线程可以负责 服务 所有客户端请求,将它们卸载到单独的工作线程以进行 处理 ,然后检索要发回的答案给客户。这种方法可以很好地将 IPC 工作与 multi-threaded 处理分开。