簡體   English   中英

我的 boost::asio::thread_pool 中的線程 ID 始終相同

[英]Thread-ID is always the same in my boost::asio::thread_pool

我嘗試了boost 文檔中的示例:

#include <boost/thread/thread.hpp>
#include <iostream>
#include <boost/asio/post.hpp>
#include <boost/asio/thread_pool.hpp>

int count = 0;

void my_task() {
    count++;
    const auto my_count = count;
    std::cout << "Task " << my_count << ") BEGIN: Thread-ID:" << boost::this_thread::get_id << std::endl;
    boost::this_thread::sleep(1000000000);
    std::cout << "Task " << my_count << ") END:   Thread-ID:" << boost::this_thread::get_id << std::endl;
    
}

int main(int argc, char** argv) {

    std::cout << "Main-thread-ID:  " << boost::this_thread::get_id << std::endl;
    
    // Launch the pool with two threads.
    boost::asio::thread_pool pool(2);

    // Submit a function to the pool.
    boost::asio::post(pool, my_task);
    boost::asio::post(pool, my_task);
    boost::asio::post(pool, my_task);
    boost::asio::post(pool, my_task);
    boost::asio::post(pool, my_task);

    // Wait for all tasks in the pool to complete.
    pool.join();

    return 0;
}

輸出是:

Main-thread-ID:  00CC96C6
Task 1) BEGIN: Thread-ID:00CC96C6
Task 2) BEGIN: Thread-ID:00CC96C6
Task 1) END:   Thread-ID:00CC96C6
Task 3) BEGIN: Thread-ID:00CC96C6
Task 2) END:   Thread-ID:00CC96C6
Task 4) BEGIN: Thread-ID:00CC96C6
Task 4) END:   Thread-ID:00CC96C6
Task 3) END:   Thread-ID:00CC96C6
Task 5) BEGIN: Thread-ID:00CC96C6
Task 5) END:   Thread-ID:00CC96C6

為什么始終顯示相同的線程 ID? 我做錯了什么嗎? 它仍然並行執行我的任務。 所以,我不太擔心。

當我嘗試使用boost::thread_group類似示例時,我看到了相同的行為。

謝卡爾德爾 我將所有出現的boost::this_thread::get_idboost::this_thread::get_id() ,這導致了不同線程 ID 的預期輸出:

Main-thread-ID:  5a78
Task 1) BEGIN: Thread-ID:77d0
Task 1) BEGIN: Thread-ID:5f34
Task 1) END:   Thread-ID:5f34
Task 1) END:   Thread-ID:77d0
Task 2) BEGIN: Thread-ID:5f34
Task 3) BEGIN: Thread-ID:77d0
Task Task 2) END:   Thread-ID:5f34
3) END:   Thread-ID:77d0
Task 4) BEGIN: Thread-ID:77d0
Task 4) END:   Thread-ID:77d0

暫無
暫無

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

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