您好我目前正在尝试在 C++ 中实现一个计时器,该计时器会在用户空闲一定时间后自动注销用户。我想做的是当用户输入命令时,从 main 调用 NotIdleException 并且从计时器开始重新启动运行 sleep 15 分钟函数的线程
计时器代码位于此处 http://pastebin.com/tw1YGcmu
我遇到的问题是我想从主线程调用这个异常,并让它由定时器线程中的 try catch 处理。有什么办法可以在 C++ 中做到这一点(跨平台!)?
您好我目前正在尝试在 C++ 中实现一个计时器,该计时器会在用户空闲一定时间后自动注销用户。我想做的是当用户输入命令时,从 main 调用 NotIdleException 并且从计时器开始重新启动运行 sleep 15 分钟函数的线程
计时器代码位于此处 http://pastebin.com/tw1YGcmu
我遇到的问题是我想从主线程调用这个异常,并让它由定时器线程中的 try catch 处理。有什么办法可以在 C++ 中做到这一点(跨平台!)?
我简要查看了您的代码,但没有关于如何调用/使用它的示例。
如果您正在寻找一种跨线程传输异常的方法,则 std::future(在 C++11 中)将在调用其 get() 成员函数时传播异常,如果填充未来的线程生成异常。 std::future::get
您还可以查看 std::condition_variable,它可以通知线程(也是 C++11 功能)。
很难说,因为没有明确说明您的代码将如何使用,但我认为 std::condition_variable 将是您尝试做的更好的设计。