【发布时间】:2009-09-08 17:08:56
【问题描述】:
有没有办法在不同的线程上创建一个计时器(比如 10 秒)? 我的意思是,我知道如何使用 CreateThread() 并且我知道如何创建/使用计时器。我遇到的问题是新线程无法接收回调函数。
对于那些不可避免地会问“你为什么要这样做?”的人。答案是因为我必须这样做。它是一个更大程序的一部分,不能在代码的这个特定部分使用回调函数。就是这样。
有什么办法可以做到吗?
代码表示赞赏。
谢谢!
编辑:
对问题的更好解释: 我的应用程序由两个独立的程序组成。主程序(可见,用户界面)和另一个在后台做艰苦的工作(有点像守护进程)。 后台进程需要在退出前完成对数据库的写入并关闭很多小文件。 主应用程序向该后台进程发送“我们完成了”消息。收到此消息后,后台进程将返回当前状态并存在。 现在,我需要添加以下内容:收到消息后,它返回一个状态并触发一个计时器,该计时器将在另一个线程上等待 X 时间,同时后台进程关闭所有数据库连接和文件。如果计时器达到 0 并且后台进程仍然存在,那么它将终止它。如果后台进程关闭了所有数据库和文件,那么线程(和计时器)将在达到 0 之前终止,因为应用程序正常终止。
这样更好吗?
【问题讨论】:
-
呃,对不起,我误读了这个问题。如果你不能使用回调(虽然我无法想象这种情况),那么你可以为每个计时器编写一个 ThreadProc 吗?
-
请阅读该问题的编辑
-
我无法想象一个不排除线程的“无回调函数”策略,因为线程是一个函数,你可以让操作系统重新调用你,尽管有一个新的堆栈上下文.
标签: c windows multithreading timer