【发布时间】:2019-04-21 14:07:02
【问题描述】:
我正在创建一个让应用程序休眠 1000 毫秒的代码,我希望在我左键单击鼠标按钮时完成 sleep() 线程。我现在可以正常工作,但我希望能够使睡眠线程只发生一次,然后在按下键后停止睡眠()。 它只会在我停止单击然后再次单击时返回睡眠线程。
【问题讨论】:
-
您通常不能这样做。但是,您可以在循环中睡更短的时间。可能需要 250 毫秒,然后跳出那个循环。但是,这取决于您使用的 API。标准
c++没有鼠标的概念。您需要标记您正在使用的 api 或框架以获得更准确的建议。 -
命令线程休眠是最被滥用的,因为miss理解时间的东西。你的回调就像计时器和点击事件的处理程序。就像 boost::asio 和 Qt 一样。
-
同时发布您的代码。
-
如果您的应用程序处理鼠标点击,那么它可能基于 GUI 框架。在这种情况下,不要“让应用程序休眠一秒钟”。启动一秒计时器,并将应用程序置于不同的“睡眠状”状态——在这种状态下,它向用户;但在此期间它仍然可以响应事件。然后,编写处理程序,在计时器触发或用户单击鼠标时(以先到者为准)将应用程序恢复到“正常状态”。
标签: c++ multithreading