Я использую ниже простую программу для генерации спящего режима для аргумента, указанного в командной строке.Как мы можем прервать основной поток
Не удается найти объект boost::thread
, соответствующий основной теме. Используя empt thread_obj
, работает sleep
, но boost :: объект потока не прерывается при каждом запуске программы.
Так есть какая-то конкретная причина, по которой я не получаю прерывание для объекта boost::thread
?
#include<iostream>
#include<boost/thread/thread.hpp>
#include<boost/date_time/date.hpp>
using namespace boost;
using namespace std;
boost::thread thread_obj;
boost::thread thread_obj1;
void func(void)
{
char x;
cout << "enter y to interrupt" << endl;
cin >> x;
if(x == 'y')
{
cout << "x = 'y'" << endl;
thread_obj.interrupt();
cout << "thread interrupt" << endl;
}
}
int main(int argc,char **argv)
{
thread_obj1 = boost::thread(&func);
boost::system_time const timeout = boost::get_system_time() + boost::posix_time::seconds(atoi(argv[1]));
try
{
boost::this_thread::sleep(timeout);
} catch(boost::thread_interrupted &)
{
cout <<"thread interrupted" << endl;
}
}
Понятия не имею, что вы делаете с 'thread_obj': нет резьбы прилагается к нему! –
@LightnessRacesinOrbit boost :: Thread_obj создан только для применения сна ... возможно ли это сделать ... ?? –
№ На какой нить будет применен спать? Это не имеет смысла. –