我已经掌握了一些新的Visual Studio原生并发运行时(ConcRT)。这只是一个疏忽,还是有一个合理的理由,即没有数据的跨线程移动具有移动语义?它们都是复制语义。你不能移动到并发队列中,你不能用asend来移动,等等。你甚至不能移动构造并发队列。
发布于 2010-12-31 14:20:12
我不知道这个特定的框架,但一般来说,对于线程间队列,你必须有复制语义。
假设我创建了一个对象,获取对它的引用/指针,然后将其移动到队列中。然后另一个线程将其移出队列。这样两个线程就可以同时访问它了。
我认为在一般情况下,只需要在任何时候添加或删除副本,而不是两个都有(即只需要一个副本)。例如,拷贝入移出,但这在语义上与拷贝入拷贝出是相同的。
发布于 2011-06-02 18:58:36
rvalue支持可以在许多领域增强ConcRT、代理和PPL。与任何大型软件项目一样,当您构建依赖于其他新功能的功能时,能够一次交付所有功能总是存在一些风险。
PPL是向前迈出的重要一步,但我们从来没有说过它是“完成的”。:-)
如果您对ConcRT、PPL或代理库应该在何处支持移动语义有特别的建议,请在connect.microsoft.com中提出建议。
https://stackoverflow.com/questions/4433011
复制