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