我有一个在64位Linux上运行的C ++应用程序。我打算通过管道将一个简单的结构数据(没有虚函数)从一个线程传递到另一个线程(在同一个进程中),没有任何特殊的对齐考虑。基本上,发送方发送sizeof(struct)字节的数量。并且recving side将这些字节转换为struct。没有并发访问/原子性问题。并且将来不会有任何将数据传递到其他进程或远程计算机的计划。
我很肯定代码将按预期工作。
但是,我希望得到SO专家对我的方法的意见,看看是否存在任何潜在问题。 (因为在这种情况下测试可能不会透露它们。)
答案 0 :(得分:1)
我宁愿使用std::deque<MyStruct>
,并使用像std::condition_variable
之类的简单同步机制来通知消费者线程有关可用数据的信息,再加上std:::mutex
来编写/读取/ {从队列线程安全。
我认为这应该比pipe
句柄和所有write()
/ read()
操作更有效率。