正如我上面提到的,我应该在下一节中为 std::async 提供 std::mutex 吗? :
#include <vector>
#include <future>
#include <mutex>
#include <ranges>
int main()
{
[[maybe_unused]] result=::std::async([&]
{
::std::mutex s{};
::std::vector<int> f{};
::std::ranges::for_each(::std::views::iota(1) | ::std::views::take(10) | ::std::views::filter([&](const auto& iter) { return 0 == 2 % iter; }), [&](const auto& iter)
{
{
std::unique_lock guard{ s };
f.push_back(iter);
}
});
});
return 0;
}
有人可以详细解答这个问题吗?谢谢!
正如 @Aconcagua 上面的回答,不需要为向量提供 ::std::mutex。由于范围是严格按顺序执行的。 感谢阿空加瓜的解释。