S Supermay Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-01 #1 守护线程如何写? 需求:有N个线程,如何写一个守护线程,若前面N个线程出错并中止后,如何使用守护线程重新启动第i(i不大于N)个线程 如何才能知道线程异常中止?
C cqwty Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-01 #2 这个需要从框架上做好规划,因为你的其他的线程和守护线程之间要有一个统一的通信机制,线程要告诉守护线程自己正常运行。就比如说,qq这种聊天一样,服务器就是一个守护线程,而其他的客户端就是你的多线程,那么客户端和服务器之间,就有一个定时检测的机制,客户端告诉服务器自己在线。所以,你要做到你所需要的,就必须解决这个问题。
这个需要从框架上做好规划,因为你的其他的线程和守护线程之间要有一个统一的通信机制,线程要告诉守护线程自己正常运行。就比如说,qq这种聊天一样,服务器就是一个守护线程,而其他的客户端就是你的多线程,那么客户端和服务器之间,就有一个定时检测的机制,客户端告诉服务器自己在线。所以,你要做到你所需要的,就必须解决这个问题。
就 就此开始 Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-02 #3 把所有线程加载到List中,守护线程定时循环判断每个Item的状态。如果停止的话再启动
C cqwty Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-02 #5 来自:就此开始, 时间:2008-8-2 10:47:14, ID:3911817 把所有线程加载到List中,守护线程定时循环判断每个Item的状态。如果停止的话再启动 线程结束了就释放了,你如何启动呢? 来自:Supermay, 时间:2008-8-2 20:30:40, ID:3911886 但某一线程的运行参数并不知道,如何重启 那你这个就没有办法了哦,连参数都不知道,如何启动。
来自:就此开始, 时间:2008-8-2 10:47:14, ID:3911817 把所有线程加载到List中,守护线程定时循环判断每个Item的状态。如果停止的话再启动 线程结束了就释放了,你如何启动呢? 来自:Supermay, 时间:2008-8-2 20:30:40, ID:3911886 但某一线程的运行参数并不知道,如何重启 那你这个就没有办法了哦,连参数都不知道,如何启动。
U ufo Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-13 #6 用delphi的线程类啊,不要设置为线程结束后自动释放。这样线程结束运行了,线程类实例还在的。线程创建时传入的参数保存在一个类的私有变量内即可。 然后启动线程后,就用内核事件等待函数来等待线程结束,不过这个方法不适合一个线程监控多个线程,因为等待函数是阻塞的。 一对多监控,你可以在监视线程内用一个循环扫描每个线程 if GetExitCodeThread(线程id,VarExitCode) <> STILL_ACTIVE then 线程挂了 然后用保存的线程实例重新运行线程即可。保证参数一致。
用delphi的线程类啊,不要设置为线程结束后自动释放。这样线程结束运行了,线程类实例还在的。线程创建时传入的参数保存在一个类的私有变量内即可。 然后启动线程后,就用内核事件等待函数来等待线程结束,不过这个方法不适合一个线程监控多个线程,因为等待函数是阻塞的。 一对多监控,你可以在监视线程内用一个循环扫描每个线程 if GetExitCodeThread(线程id,VarExitCode) <> STILL_ACTIVE then 线程挂了 然后用保存的线程实例重新运行线程即可。保证参数一致。