カスタムクラス「sau_timer」のコードは次のとおりです。
sau_timer::sau_timer(int secs, timerparam f, vector<string> params) : strnd(io),
t(io, boost::posix_time::seconds(secs))
{
assert(secs > 0);
this->f = f;
this->params = params;
t.async_wait(strnd.wrap(boost::bind(&sau_timer::exec, this, _1)));
boost::thread thrd(boost::bind(&boost::asio::io_service::run, &io));
io.run();
}
void sau_timer::exec(const boost::system::error_code&) {
(f)(params);
}
sau_timer オブジェクトを作成すると、タイマーが開始されますが、プログラムの実行は継続できるようにしたいと考えています。たとえば、これは main() です。
int main(int argc, char* argv[])
{
vector<string> args(1);
args[0] = "Hello!";
sau_timer timer_test(3, sau_prompt, args);
args[0] = "First!";
sau_prompt(args);
timer_test.thrd.join();
return 0;
}
ここでの私の意図は、timer_test が作成され、sau_prompt("Hello!") を呼び出す前に 3 秒待機するタイマーを開始することですが、sau_prompt("First!") が最初に呼び出されます。現時点では、First の前のプロンプトに Hello が表示されており、タイマーがプログラム全体を 3 秒間停止してから続行できることを示しています。タイマーをバックグラウンドで実行したい。
私は何を間違っていますか?コードはコンパイルされます...
ありがとうございました。