Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
流程c和x2B之间的共享列表+; 我是C++新手,有点问题。_C++_List_Ipc - Fatal编程技术网

流程c和x2B之间的共享列表+; 我是C++新手,有点问题。

流程c和x2B之间的共享列表+; 我是C++新手,有点问题。,c++,list,ipc,C++,List,Ipc,因此,我有一个UdpServeur,接收消息,我希望我编写的另一个程序能够使用它们。 所以我使用了先进先出管,但它的代码非常繁重。然后我对一个简单的.txt文件使用了锁,但它不是很干净,对项目也不好 对于我的项目,人们告诉我可以使用带有参考的列表,但我并不真正理解 我很确定有一种非常简单的方法可以让程序与同一个列表交互,而无需付出很多努力。。。 请帮帮我D 非常感谢。使用并不复杂,您甚至不需要关心发布它 std::mutex list_mutex; // Access from thread

因此,我有一个UdpServeur,接收消息,我希望我编写的另一个程序能够使用它们。 所以我使用了先进先出管,但它的代码非常繁重。然后我对一个简单的.txt文件使用了锁,但它不是很干净,对项目也不好

对于我的项目,人们告诉我可以使用带有参考的列表,但我并不真正理解

我很确定有一种非常简单的方法可以让程序与同一个列表交互,而无需付出很多努力。。。 请帮帮我D 非常感谢。

使用并不复杂,您甚至不需要关心发布它

std::mutex list_mutex; 

// Access from thread 1:
{
   std::lock_guard guard(list_mutex);
   // Work with the list
}

// Access from thread 2:
{
   std::lock_guard guard(list_mutex);
   // Work with the list
}

必须在两个线程都可以看到的地方声明list和list_互斥体。一旦执行离开曲括号区域(也使用返回或抛出异常),锁防护装置将被释放。

如果你勇敢,可以使用共享内存,但这并不总是像听起来那么容易。如果你可以使用线程而不是多个进程,那么你最好使用线程而不是多个进程,即使这样也有点痛苦?它们一般不“重”。我想说,使用管道比使用UDP套接字更容易。@tadman谢谢你tadman的回答,我尝试了共享内存,昨天我花了一整天的时间来做,结果很糟糕。因此,如果我有多个线程在运行,我只需要使用一个带有引用的列表就可以了。线程使共享数据变得更容易,但是如果这些数据不是
const
,那么使用互斥对象等协调更改可能会很棘手。如果它只是一个查找表,为什么不将它转储到一个文件中,然后两个进程都可以使用它呢?如果它不断变化,你最好为IPC使用一个合适的客户机/服务器模型。@Someprogrammerdude我的管道让我使用2个临时文件。这是一个大项目,我会有很多IPC,所以我不能有那么多的文件。也许我不清楚,但我有一个client.serveur在UDP中讲话,这是另一部分,但我希望服务器接收的消息与另一个线程/进程放在共享列表中。。。