关于一个维护线程句柄表的问题(200分)

  • 主题发起人 主题发起人 iknowabc
  • 开始时间 开始时间
I

iknowabc

Unregistered / Unconfirmed
GUEST, unregistred user!
一个想法(程序健壮性):
程序除主线程外有N个程序分别处理不同的信息,希望将N个线程的句柄维护成一个线程句柄表,然后在主线程中起一个TIMER,定时轮训这些线程,如果发现某个线程已经处于非正常状态(已死亡或者死锁什么的),就Kill掉这个线程(如果可能),然后再起一个这种线程接替刚才那个线程的工作。
问题是:
1)由线程句柄可以得到线程哪些信息,用什么API?
2)线程状态不好判断
3)Kill一个线程是windows不建议的,有没有什么其他解决办法。
 
1、查看API帮助: Process and Thread Functions
2、由线程主动发送自己还活着的信息
3、如果线程都死了,还想有什么办法?
4、只会越搞越复杂,不一定能对程序的健壮性起到帮助。[8D]
 
小弟现在编程时在维护一个线程池,由于以上问题没有解决,所以现在只是同时起了N个线程,
并不能根据实时情况增加或者减少线程数目,主要就是上面提到的不能很好地维护线程句柄表。
to xianjun:如果线程死了,就启动一个一模一样的线程代替它处理信息。我是这样想的,API中提到应该
让线程自动退出,但是如果线程死锁,那么就不能控制这个线程,怎么让它能够主动退出?所以只能采用
KILL的方法。

各位大侠,有没有好一点的方法吗?
 
》线程死锁 <==> 主动退出
本身就是一个矛盾,怎么可能实现呢, 只能采用避免死锁的办法。
 
不知道线程池程序应该怎么管理各个线程,我想应该是要维护一个列表吧。那么具体怎么干呢?
 
等待大侠的帮助!
 
up,大侠能否给点提示?
 
用tlist链表进行维护不是很好么?
 
你的办法有个很大的问题,假设说线程1死掉了你想替换它,
但是它死之前的寄存器和内存状态你根本就没有快照,你怎么替换它,
从哪里开始阿!
 
做一个线程池,定时(不要用Timer)探测他们的状况,发现异常就关掉比如数据库连接什么的
让线程退出
 
to 张无忌
"发现异常就关掉"就是kill这个进程吗?
 
to 张无忌
定时(不要用Timer)探测他们的状况???
呵呵,为什么不用timer,那么用什么定时呢?
 
问题挺有意思,听讲!
 
呵呵,朋友们继续发表意见三。
 
后退
顶部