Как определить размер стека для конкретного потока с помощью библиотеки C ++ boost? - PullRequest
0 голосов
/ 06 ноября 2018

Мне нужно увеличить размер стека boost::thread объекта. Задача потока состоит в том, чтобы хранить большой набор трехмерных точек, который реализован рекурсивно и поэтому требует достаточно места в стеке.

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.) Правильно ли я увеличил размер стека потока до 16 МБ в приведенном выше коде?

B.) Можно ли как-то прочитать атрибуты, в частности текущий размер стека, объекта boost::thread?

1 Ответ

0 голосов
/ 06 ноября 2018

Да, вы установили размер стека 16M. Это дает вам размер стека.

std::cout << attrs.get_stack_size() << std::endl;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...