簡體   English   中英

如何通過 std::thread 生成多個線程?

[英]how to generate many threads by std::thread?

眾所周知,我們可以通過 std::thread t1(func); 生成一個線程; 鏈接但是我們如何通過向量創建 20 個線程呢?

一個示例解決方案是:

std::vector<std::thread> my_threads{};
my_threads.reserve(20);

for(int i = 0; i < 20; i++)
    my_threads.emplace_back([i]{
        std::cout << "[" << i << "] Going to sleep\n";
        this_thread::sleep_for(std::chrono::seconds{1});
        std::cout << "[" << i << "] Hey I'm back :)\n";
    });

for(auto& thread : my_threads)
    if(thread.joinable())
        thread.join();

注意最后的樹線。 如果您不加入或分離線程,您將中止。
這可以防止您的應用程序泄漏非托管線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM