【问题标题】:Thread-ID is always the same in my boost::asio::thread_pool我的 boost::asio::thread_pool 中的线程 ID 始终相同
【发布时间】:2021-09-18 23:22:21
【问题描述】:

我尝试了boost docs中的示例:

#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?我做错了什么吗?它仍然并行执行我的任务。所以,我并不太担心。

当我尝试使用similiar exampleboost::thread_group 时,我看到了相同的行为。

【问题讨论】:

  • boost::this_thread::get_id 是您需要调用的函数,您现在正在打印函数本身的地址。

标签: c++ multithreading boost boost-asio boost-thread


【解决方案1】:

谢谢Kaldrr!我将所有出现的 boost::this_thread::get_id 更改为 boost::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

【讨论】:

    猜你喜欢
    • 2021-12-28
    • 2021-10-17
    • 2019-07-11
    • 1970-01-01
    • 2019-02-21
    • 2020-08-03
    • 2014-01-31
    • 1970-01-01
    相关资源
    最近更新 更多