有人建议我使用回调函数来实现一个计时器,以便在我的服务器应用程序读取来自客户端的输入时在后台运行。我试着在网上查看解释,但希望有人能给我一个更简单的类比。
谢谢。
发布于 2009-11-26 19:36:38
在Windows中使用回调实现计时器有两种不同的方法,SetTimer和timeSetEvent。基本情况是:
如果你需要在后台工作,那么线程可以是一种更优雅的方式来解决这个问题。在线程化时,您不必将工作划分为多个块(如果您从计时器中启动工作,则可以这样做)。但是当然你的线程不能接触到GUI,所以当你开始线程的时候,生活可能会变得有点复杂。在我的网站here上有一个关于worker线程的介绍。
发布于 2009-11-26 17:02:23
类比?
下面是回调函数的简要说明:
What is a “callback” in C and how are they implemented?
使用带有回调的计时器就是说“每隔y秒调用函数x”,在支持多任务的系统中,该函数将在第二个执行线程中每y秒被调用一次,而不管原始函数可能在做什么。
编辑:正如在另一个答案中所建议的,系统可能不会为您创建第二个线程,在这种情况下,您必须自己创建线程并从该线程设置回调。
编辑:在Windows中,你可以使用SetTimer函数。它会将一条WM_TIMER消息发送到您的窗口的消息队列中,您的消息循环可能会自行处理该消息队列,或者将其移交给默认的消息过程来调用您指定的回调函数。我不确定如果你没有窗口会发生什么,但你可以试一试。
发布于 2009-11-26 17:01:38
你的问题相当不清楚,但他们很可能建议你创建一个线程并在那个线程中运行你的函数。
这可以通过对特定于系统的Thread类进行子类化来实现;通过使用某种回调函数作为参数来构造相同的类;通过创建一个计时器来在一定的时间限制后调用回调函数……如果没有更具体的问题,我就不能给出更具体的建议。
https://stackoverflow.com/questions/1802355
复制相似问题