如何使用C ++ Boost库为特定线程定义堆栈大小?

时间:2018-11-05 22:15:13

标签: c++ multithreading c++11 boost

我需要增加boost::thread对象的堆栈大小。线程的任务是存储大量的3D点,这是递归实现的,因此在堆栈上需要相当大的内存空间。

int main(int argc, char* argv[]) {
    Flashlight *flashlight = new Flashlight();
    flashlight->thread_group = new boost::thread_group();
    boost::thread::attributes attrs;
    attrs.set_stack_size(16*1024*1024);
    flashlight->orbslam_thread = new boost::thread(attrs, boost::bind(&Flashlight::orbslam_loop, flashlight));
    flashlight->thread_group->add_thread(flashlight->orbslam_thread);
    // initializing some more threads ...
    flashlight->thread_group->join_all();
    return 0;
}

A。)是否在上面列出的代码中将线程的堆栈大小正确地增加到16MB?

B。)是否可以通过某种方式读取boost::thread对象的属性,特别是当前堆栈大小?

1 个答案:

答案 0 :(得分:0)

是的,您已将堆栈大小设置为16M。这为您提供了堆栈大小。

std::cout << attrs.get_stack_size() << std::endl;