gpt4 book ai didi

c++ - boost中的线程安全可复制循环缓冲区

转载 作者:行者123 更新时间:2023-11-28 07:13:56 25 4
gpt4 key购买 nike

我正在使用 boost 1.53,我希望在我的应用程序中有一个线程安全的循环缓冲区实现。请查看下面的应用程序概念:

我有 N 个套接字,我从那里读取数据并将其放入相应的循环缓冲区。关键是我不知道要打开的套接字的确切数量(它们甚至可以动态打开)我想到的一个明显的解决方案是在类(class)之间和类(class)内部制作一张 map 。但这是不可能实现的,因为互斥量不是可复制的对象。

我的任务的最佳解决方案是什么?任何想法,将不胜感激。期待您的回复。

提前Tnx,德米特里

最佳答案

But it's not possible to achieve as mutex is not a copyable object.

这不是问题,因为您不希望拷贝的互斥量与原始互斥量有任何关系。

您可以像复制法线贴图一样复制数据,然后为拷贝默认构造一个新互斥锁

class MyBuffer
{
std::map<key_T, value_T> m_data;
mutable std::mutex m_mutex;
public:
MyBuffer(MyBuffer const& other)
{
std::lock_guard<std::mutex> lk(other.m_mutex);
m_data = other.m_data;
}
// [...]
};

关于c++ - boost中的线程安全可复制循环缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20543380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com