阻塞函数的超时问题应该如何判断?

genesisking 2005-07-18 09:54:21
在Unix下,假如有阻塞函数Build_RECEIVE_ALLOCATE,如何在特定的时间没有响应,就继续往下走?我原来的想法是通过线程,在线程里调用Build_RECEIVE_ALLOCATE函数,如果一定时间里没有响应,就在主线程里调用WaitForObject来取消线程,以达到超时的目的。
但是发现这样只有第一次成功,后面的都很难成功,不知道怎么回事?还是有其他什么办法?
主要的2个函数如下:

void TRecvThread::ExecuteThread()
{
int i = 0 ;
Build_RECEIVE_ALLOCATE();
i ++ ;
cout << i << endl;
}

void TRecvThread::WaitForObject()
{
void *ret;
pthread_cancel(pt);
printf("cancel成功\n");
pthread_join(pt, &ret);
printf("join成功\n");
}
...全文
171 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
KenYuan2016 2005-07-22
  • 打赏
  • 举报
回复
定时器 判断 有些函数本身参数里面就可能有超时概念..
genesisking 2005-07-22
  • 打赏
  • 举报
回复
to oyljerry(【勇敢的心】→ ㊣空调好了,赞㊣):
问题是怎么做超时处理。
darkstar21cn 2005-07-22
  • 打赏
  • 举报
回复
ACE的实现方法基本是,处理操作=>是否完成=>(完成返回成功推出)未完成,等待一定时间=>重试=>尝试到设定时间=>返回超时。
okdavinci 2005-07-19
  • 打赏
  • 举报
回复
爱莫能助!Y友情up1
genesisking 2005-07-19
  • 打赏
  • 举报
回复
怎么没有人回答我的问题啊?
genesisking 2005-07-19
  • 打赏
  • 举报
回复
Build_RECEIVE_ALLOCATE是我自己写的一个函数,怎么设超时值啊?
oyljerry 2005-07-19
  • 打赏
  • 举报
回复
Build_RECEIVE_ALLOCATE函数中自己作一个超时处理
runall 2005-07-18
  • 打赏
  • 举报
回复
Build_RECEIVE_ALLOCATE
这个函数可以设置一个超时的返回值呀

64,687

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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