考虑到我缺乏 C++ 知识,请尝试阅读我的意图,而不是我糟糕的技术问题。
我正在使用 websocket++ 构建一个 websocket 服务器(哦,websocket++ 很甜。我强烈推荐),我可以轻松地安全地操作每个用户数据,因为它真的不需要由不同的线程操作;但是,我确实希望能够在一个函数线程中写入一个数组(我将使用来自 vb、php、js 等较弱语言的包罗万象的术语“数组”)(可以运行多个迭代)同时)并读入 1 个或多个线程。
以堆栈为例:如果我想让所有id
s (PRIMARY
所有文章的列)以特定方式排序,在这种情况下通过净投票,并保存在内存中,我想我会有一个名为的函数就其本身boost::thread
而言,每当网站上的投票进入以重新排序数组时就会被解雇。
如何在不锁定和阻塞的情况下做到这一点?我对用户从旧数组读取而另一个正在构建中的用户 100% 没问题,但我绝对不希望他们的读取或线程写入失败/被阻塞。
是否存在无锁数组?如果没有,是否有某种方法可以在临时数组中构建新数组,然后在构建完成时将其写入实际数组而无需锁定和阻塞?