C++ 在使用STD::用并行执行策略排序时,我需要考虑什么?

C++ 在使用STD::用并行执行策略排序时,我需要考虑什么?,c++,c++17,C++,C++17,使用C++17,我们得到了执行策略。 我对这本书感兴趣 P>当使用并行策略时,我需要考虑 STD::排序< /COD>? 与std::transform或std::for_each不同,std::sort同时访问两个元素。在这里我必须考虑数据竞赛吗?< /P> < P>在调用 STD::排序< /代码>时,没有任何额外的事情需要考虑执行策略。它已经为您的比较准备好了,可以对它正在比较的元素进行变异 需要实现以确保在std中定义的任何函数中没有数据争用,sort或任何有效的排序函数都不应修改正在

使用C++17,我们得到了执行策略。 我对这本书感兴趣

<> P>当使用并行策略时,我需要考虑<代码> STD::排序< /COD>? 与
std::transform
std::for_each
不同,
std::sort
同时访问两个元素。在这里我必须考虑数据竞赛吗?< /P> < P>在调用<代码> STD::排序< /代码>时,没有任何额外的事情需要考虑执行策略。它已经为您的比较准备好了,可以对它正在比较的元素进行变异


需要实现以确保在
std

中定义的任何函数中没有数据争用,sort或任何有效的排序函数都不应修改正在排序的容器的值。因此,实际上不需要
std::sort
本身进行任何同步。话虽如此,如果您有其他线程可以在
std::sort
运行时修改容器或其存储值,那么这是另一回事,但这不是
std::sort
可以防止的。你有责任防止这种情况发生。@SomeProgrammerDude这可能是语言障碍,但看到“排序[…]不应该[不]修改正在排序的容器的值”的断言,感觉真的很奇怪。很明显,它会修改它们,因为它会交换它们,这会改变被交换的对象。虽然我相信我正在得到你想要传达的信息:)