Я хочу создать поток с ACE_thread_manager, при отладке нет ошибки. но результат неправильный. Функция не работает; такой код:Менеджер потоков ACE не может вызвать функцию
#include "ace/OS.h"
#include "ace/Log_Msg.h"
#include "ace/Thread_Manager.h"
#include <iostream>
void thread_start(void* arg)
{
std::cout << "Running thread..\n";
}
int main(int argc, char *argv[])
{
ACE_Thread_Manager::instance()->spawn(ACE_THR_FUNC(thread_start), 0, THR_NEW_LWP);
return 0;
}
это демо должно напечатать «Идущие нить ..», но когда я его отладки, он не печатать ничего. Эти китайцы означают «Пожалуйста, нажмите любую клавишу, чтобы продолжить».
Проблема, скорее всего, в том, что вы не дождались фактического завершения потока, поэтому процесс завершается до того, как поток будет иметь время для запуска. Вам нужно дождаться окончания потока. –
Если вы не хотите ждать потока, вам нужно отделить его (используя, например, флаг «THR_DETACHED»). –
十分 感谢 您 解决 了 我 的 问题 !! Я пытаюсь добавить «ACE_Thread_Manager :: instance() -> wait();" Я получил то, что хочу – Lucifer