当前位置:  技术问答>linux和unix

pthread_cond_timedwait为什么不起作用

    来源: 互联网  发布时间:2015-05-18

    本文导语:  void fun() {   struct timespec tm;   tm.tv_sec = 2;   tm.tv_nsec = 0;   pthread_mutex_lock(&mutex);   while(1)  {     pthread_cond_timedwait(&cond, &mutex, &tm);     printf("DDn");  } } 上边是线程函数,但是一旦执行,就根本没有阻塞2...

void fun()
{
  struct timespec tm;
  tm.tv_sec = 2;
  tm.tv_nsec = 0;

  pthread_mutex_lock(&mutex);
  while(1)
 {
    pthread_cond_timedwait(&cond, &mutex, &tm);
    printf("DDn");
 }
}

上边是线程函数,但是一旦执行,就根本没有阻塞2秒,屏幕一直输出dd;请问为什么!?

|
int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime); 
注意abstime是绝对时间

1.
tm.tv_sec = time(NULL)+2;
tm.tv_nsec = 0;
2.
struct timeval now;
gettimeofday(&now);
tm.tv_sec = now.tv_sec + 2;
tm.tv_nsec = now.tv_usec * 1000;

|
把你的所有代码帖出来看看.
pthread_cond_timedwait是最大等待信号.即最多等待那么多的时间,如果有信号则根本就不等待.

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • pthread_cond_timedwait用法
  • 急 关于 pthread_cond_timedwait() 超时后的问题!!!在线等
  • pthread_cond_timedwait用来让线程睡眠无效?
  • pthread_cond_timedwait怎么等待50ms啊?
  • 关于pthread_cond_timedwait的问题
  • 谁知道条件变量的用法??用 pthread_cond_timedwait()时遇到了问题
  • pthread_cond_timedwait带时间的线程同步条件变量用法,请教!谢谢


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3