c++ - 并发中的右值引用

标签 c++ concurrency c++11

我已经开始认真掌握新的 Visual Studio native 并发运行时 (ConcRT)。这只是一个疏忽,还是有正当理由表明没有数据的跨线程移动具有移动语义?它们都是复制语义。您不能移动到并发队列中,不能移动 asend 等。您甚至不能移动构造并发队列。

最佳答案

我不知道这个特定的框架,但通常对于线程间队列,您必须具有复制语义。

假设我创建了一个对象,获取一个指向它的引用/指针,然后将它移到队列中。然后另一个线程将它移出队列。然后两个线程可以同时访问它。

我认为在一般情况下,只需要添加或删除拷贝,而不是两者(即只需要一个拷贝)。例如copy-in-move-out,但这在语义上与copy-in-copy-out是一样的。

关于c++ - 并发中的右值引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4433011/

相关文章:

c++ - 强制编译器推出 for 循环的可能性

go - 限制运行的并发任务数

c++ - 具有函数、输入和输出类型的可变参数模板

c++ - 从 unique_ptr 创建 shared_ptr

c++ - 从 C++ 中的系统函数获取一个整数(大于 255)

c++ - 回溯查询非常慢

c++ - 通过引用遍历节点的惯用方式

java - (Java)使用对象wait()和notify()的线程安全

python - 为什么使用 ThreadPoolExecutor 时并发不起作用?

c++ - 当我聚合初始化数组时,Clang 会发出警告,而 gcc 不会