64位Linux g ++通过管道传递STRUCT btw两个线程

时间:2015-09-30 16:40:43

标签: c++ linux multithreading alignment pipe

我有一个在64位Linux上运行的C ++应用程序。我打算通过管道将一个简单的结构数据(没有虚函数)从一个线程传递到另一个线程(在同一个进程中),没有任何特殊的对齐考虑。基本上,发送方发送sizeof(struct)字节的数量。并且recving side将这些字节转换为struct。没有并发访问/原子性问题。并且将来不会有任何将数据传递到其他进程或远程计算机的计划。

我很肯定代码将按预期工作。

但是,我希望得到SO专家对我的方法的意见,看看是否存在任何潜在问题。 (因为在这种情况下测试可能不会透露它们。)

1 个答案:

答案 0 :(得分:1)

我宁愿使用std::deque<MyStruct>,并使用像std::condition_variable之类的简单同步机制来通知消费者线程有关可用数据的信息,再加上std:::mutex来编写/读取/ {从队列线程安全。

我认为这应该比pipe句柄和所有write() / read()操作更有效率。