是否需要为std::async提供std::mutex?

问题描述 投票:0回答:1

正如我上面提到的,我应该在下一节中为 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;
}

有人可以详细解答这个问题吗?谢谢!

c++ multithreading protected stdasync stdmutex
1个回答
0
投票

正如 @Aconcagua 上面的回答,不需要为向量提供 ::std::mutex。由于范围是严格按顺序执行的。 感谢阿空加瓜的解释。

© www.soinside.com 2019 - 2024. All rights reserved.