Я бы хотел использовать потоки в коммутаторе. Возможно ли это или есть другой способ прервать нить в другом месте программы?boost :: прерывание потока асинхронно
switch (event_element) // dispatch event handler
{
case 1: // main task thread
{
boost::thread thr_check_db_task (check_db_task);
break;
}
case 2:
{
std::cerr << "DATABASE CONNECTION ERROR" << std::endl;
thr_check_db_task.interrupt(); // **COMPILE ERROR**
mysql_connection_error();
break;
}
default:
break;
}
спасибо.
Вы получаете доступ к локальной переменной 'thr-check-db_task' вне пределов области видимости. Вот почему вы получили сообщение об ошибке. Один из способов - сохранить его как переменную-член класса. –
Вы не опубликовали ошибку компилятора, которую вы получаете, поэтому я угадаю, что его что-то вроде строк '' thr_check_db_task' не объявлено в этой области? Если это так, тогда это имеет смысл. 'The_check_db_task' явно не входит в сферу дела 2. – Alejandro
Да, вы оба правы. Как я могу запустить поток и прервать его асинхронно? – xinthose