C-支持put和GET的最佳线程间通信实践

C-支持put和GET的最佳线程间通信实践,c,multithreading,pthreads,ipc,C,Multithreading,Pthreads,Ipc,我想做一个实验,在这个实验中,数据和工作在特定机器上的CPU核上进行分区。这是通过设置CPU关联并将一个线程固定到每个核心来完成的。线程存储的数据是在线程内生成的,目的是使数据尽可能靠近线程(在核心缓存内)。数据类型不同,每个线程存储不同类型的数据。现在,主线程应该能够将数据放入每个线程中的每个数据容器中并获取数据,但是现在我不确定目标是什么 实验用C语言实现 假设对不同线程的并发put和get请求,哪个线程间通信技术最适合?我的想法是希望核心之间的数据移动尽可能少,因此我试图避免使用共享通信缓

我想做一个实验,在这个实验中,数据和工作在特定机器上的CPU核上进行分区。这是通过设置CPU关联并将一个线程固定到每个核心来完成的。线程存储的数据是在线程内生成的,目的是使数据尽可能靠近线程(在核心缓存内)。数据类型不同,每个线程存储不同类型的数据。现在,主线程应该能够将数据放入每个线程中的每个数据容器中并获取数据,但是现在我不确定目标是什么

实验用C语言实现

假设对不同线程的并发put和get请求,哪个线程间通信技术最适合?我的想法是希望核心之间的数据移动尽可能少,因此我试图避免使用共享通信缓冲区/互斥体。我最初的目标是在每个线程上使用套接字,但这有点太多了,因为这并不是实验的真正目的。现在我正在考虑使用某种类型的队列,我想我需要实现一些输入和输出队列,以便处理put和get。所以我来到这里希望能得到一些指导和提示


提前谢谢

试试。
因此我来到这里希望能得到一些指导和提示。
-堆栈溢出非常适合“建议”问题。实际上,“我希望核心之间尽可能少的数据移动”是非常不清楚的:假设
put
将数据(从一个线程)存储在某个地方,并且
get
提取这些数据(在另一个线程上),那么线程之间以及核心之间已经有了“数据移动”。此外,在队列为空/满的情况下,
get
put
的语义会对一种或另一种通信机制的有效性产生很大影响。感谢@Tsyvarev的提醒,其思想是每个线程都会修改和处理数据,而在不太频繁的情况下,其他一些线程会将一些数据放在这里并获取。因此,每个线程将初始化数据存储并使其与自身保持接近,而不是在线程之间共享一些数据,所有线程都使用这些数据(在内核之间创建更大的数据移动)。但我可能在这里想错了。如果问题看起来很模糊,我也很抱歉,但这就是我来这里的原因