社区
Linux/Unix社区
帖子详情
Linux 如何设置等待线程超时
gongyue1983
2010-12-11 10:52:04
我在主线程中起了另外一个线程A, 然后在主线程中等待A线程结束。我想设置一个等待时间,如果在超过等待时间我直接kill掉线程。怎么样实现?
就跟windows 编程中的WaitForSingleObject 同样的功能。 如何实现
谢谢了
...全文
829
8
打赏
收藏
Linux 如何设置等待线程超时
我在主线程中起了另外一个线程A, 然后在主线程中等待A线程结束。我想设置一个等待时间,如果在超过等待时间我直接kill掉线程。怎么样实现? 就跟windows 编程中的WaitForSingleObject 同样的功能。 如何实现 谢谢了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
linux
线程
等待
时间,
线程
超时
等待
方法
linux
中select()函数使用
线程
超时
等待
方法
linux
中select()函数使用select系统调用时用来让我们的程序监视多个文件句柄的状态变化的。程序会停在select这里
等待
,直到被监视的文件句柄有一个或多个发生了状态改变。关于文件句柄,其实就是一个整数,通过socket函数的声明就明白了:int socket(int domain, int type, int protocol);我们最熟悉的句柄是0、1、2三个...
等待
线程
的两种方法,方法执行
超时
设置
超时
时间
该方法适合毫秒级
超时
时间,且业务简单的方法,因为其会阻塞主
线程
,不建议用在UI
线程
下,会造成界面卡顿,影响用户体验。并且,
超时
后的
线程
会继续执行,直到执行完成或崩溃或锁死(未验证)。//给个方法取消标记防止
超时
后继续执行。//创建一个
等待
线程
并
设置
超时
时间。if (completedTask == timeouttask)//
超时
了,返回的是
超时
时间
线程
。方法1:
线程
等待
常用方法是TASK.Wait()。//用await不会阻塞UI
线程
。if (q.Wait(1000))//一秒返回。
linux
线程
锁
超时
,互斥锁和条件变量同步
线程
等待
超时
程序问题
/**************************************************************************************//*文件:pthread_cond.c*//*简介:互斥锁和条件变量同步
线程
等待
超时
程序*/...
Linux
多
线程
等待
超时
机制的实现:pthread_mutex_lock/pthread_cond_signal/pthread_mutex_unlock
最近在做一个项目,需要实现两个
线程
之间的
等待
超时
机制。例如A
线程
等待
B
线程
,需要实现
等待
超时
机制。解决方案是利用条件变量实现。 1. 条件变量 条件变量被用来阻塞一个
线程
,当条件不满足时,
线程
往往解开相应的互斥锁并
等待
条件发生变化。一旦其它的某个
线程
改变了条件变量,它将通知相应的条件变量唤醒一个或多个正被此条件变量阻塞的
线程
。这些
线程
将重新锁定互斥锁并重新测试条件是否满足。一般说来,条...
linux
两种
超时
等待
的实现
1. 基于信号量 1 信号量初始化 /*信号量声明*/ sem_t sem; /*信号量初始化*/ if(sem_init(&sem, 0, 0)) printf("semaphore sem intitialization failed\n");123456 2
超时
等待
:
线程
1 /*
超时
时间宏: s*/ ...
Linux/Unix社区
23,121
社区成员
74,508
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章