C ++交叉线程异常抛出

时间:2013-10-12 17:12:17

标签: c++ timer

您好我正在尝试在C ++中实现一个计时器,该计时器会在用户空闲一段时间后自动注销用户。我想要做的是当用户输入命令时,从main调用NotIdleException,并且从计时器的开头重新启动运行sleep 15分钟的线程

计时器代码位于此处 http://pastebin.com/tw1YGcmu

我遇到的问题是我想从主线程中调用此异常并让它由计时器线程中的try catch处理。有什么方法可以用C ++(跨平台!)来做到这一点吗?

1 个答案:

答案 0 :(得分:1)

我简要地看了一下你的代码,但没有关于如何调用/使用它的例子。

如果你正在寻找一种跨线程传递异常的方法,那么std :: future(在C ++ 11中)会在调用get()成员函数时传播异常,如果填充了将来的线程生成的话一个例外。 std::future::get

您还可以查看std :: condition_variable,它可以通知线程(也是C ++ 11功能)。

很难说,因为没有关于如何使用代码的明确陈述,但我认为std :: condition_variable对于你想要做的事情来说是一个更好的设计。