Linux 如何设置等待线程超时

gongyue1983 2010-12-11 10:52:04
我在主线程中起了另外一个线程A, 然后在主线程中等待A线程结束。我想设置一个等待时间,如果在超过等待时间我直接kill掉线程。怎么样实现?

就跟windows 编程中的WaitForSingleObject 同样的功能。 如何实现

谢谢了
...全文
829 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yskcg 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yangzhifu 的回复:]

主线程先设置信号处理函数signal,然后启动A线程后添加alarm,然后等待pthread_join(),如果arlam超时,则启动信号处理函数,结束A线程,如果没有则关闭时钟alarm
[/Quote]支持
lvyinghong 2010-12-15
  • 打赏
  • 举报
回复
int pthread_timedjoin_np(pthread_t thread, void **retval,
const struct timespec *abstime);


这个函数应该就可以了


参考http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_tryjoin_np.3.html


然后再用pthread_detach pthread_kill 等结束?
yangzhifu 2010-12-14
  • 打赏
  • 举报
回复
主线程先设置信号处理函数signal,然后启动A线程后添加alarm,然后等待pthread_join(),如果arlam超时,则启动信号处理函数,结束A线程,如果没有则关闭时钟alarm
siatyler 2010-12-14
  • 打赏
  • 举报
回复
4楼才是正解,4楼之前的说的都是针对进程的
wyjkk 2010-12-13
  • 打赏
  • 举报
回复
一边用pthread_join()等待线程结束,另一边利用信号设置超时,如果未超时pthread_join()就结束则立即清除时钟。
lvyinghong 2010-12-13
  • 打赏
  • 举报
回复
自己看看pthread 的函数说明了,肯定是支持类似的超时的
git2500 2010-12-13
  • 打赏
  • 举报
回复
用alarm和signal两个调用就可以实现楼主的功能了
lgch123456 2010-12-11
  • 打赏
  • 举报
回复
不是有个时钟信号嘛,用时钟信号来提示,该时钟设定为你想等待的时间,你可以写一个函数来处理的时钟信号,该函数每次执行的时候去检查下你的主线程是不是已经接受线程A返回,如果返回 你可以忽略时钟信号,否则kill你的线程A

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧