快速的Linux线程同步

时间:2018-12-03 21:19:09

标签: c linux multithreading synchronization ipc

我的问题与这个here非常相似。但自从8年前被问到以来,我想知道是否还有更好的方法。另外,我是linux编程的新手,所以请保持警惕!

我的情况如下-

enter image description here

执行的操作是-

  1. 进程1和2由3个线程创建。进程2中的线程立即进入睡眠状态。
  2. 进程1的线程映射到Core 1,进程2的线程映射到Core 2。
  3. 进程1中的线程在共享内存队列中排队一条消息,并通知(当前通过futex)进程2。
  4. 进程2中的线程醒来以使消息出队。

从使用futex可以明显看出,我专注于线程唤醒延迟。我的目标是使第3步和第4步花费的时间为< 3微秒

以下是通过使用不同的IPC同步机制在步骤3和步骤4中可以获得的结果-

  

Posix互斥体+条件变量-平均14.14微秒

     

管道-平均28.54微秒

     

Futexs-平均12.48微秒

我知道这些结果是非常主观的,并且因机器而异。我需要的是关于如何使步骤3和4更快的建议?

到目前为止,我已经研究了-

  • futexes
  • 互斥体
  • 条件
  • 信号量
  • 自旋锁(不能使用,因为进程2中的线程已经在休眠)

请帮助!

假定不能更改体系结构,即必须有两个带有线程的进程。其他所有内容都可以更改。

0 个答案:

没有答案