本文介绍了做睡睡眠功能的所有线程或只是一个谁打电话吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我与pthread的在Linux(gzip)编程?我想线程睡眠很短的时间等待着什么。我想使用睡眠()了nanosleep()或usleep()函式或者也可以是可以做到这一点。我想问的是:做睡睡眠功能的所有线程或只是一个谁打电话吗?任何建议或引用是AP preciate。

 无效*的start_routine(){
    / *我只是叫睡眠功能,在这里* /
    睡眠(1); / *睡眠所有线程或只是谁把它称为一个?
                  怎么样了nanosleep(),usleep()函式,其实我
                  想谁打电话睡眠功能可以在螺纹
                  微秒或毫秒入睡。
               * /
    ...
}INT主(INT ARGC,字符** argv的){
    / *我刚刚创建的线程在这里* /
    在pthread_create(......);
    ...
    返回0;
}


我的测试程序:

 的#define _GNU_SOURCE
#包括LT&;&pthreads.h中GT;
#包括LT&;&stdio.h中GT;
#包括LT&;&stdlib.h中GT;
#包括LT&;&sched.h中GT;
#包括LT&;&unistd.h中GT;无效*的start_routine(无效* j)条{    无符号长总和;
    INT I;
    INT JJ;
    JJ =(INT)焦耳;
    做{
        总和= 1;
        对于(i = 0; I<千万,我++){
            总和=总和*(总和+ I);
        }
        如果(JJ == 0){
            的printf(\\ 033 [22;33米[JJ%D%LD] \\ t的,JJ,总和);
            睡眠(1);
        }
        其他{
            的printf(\\ 033 [22;34米[JJ%D%LD] \\ t的,JJ,总和);
        }    }而(1);    了pthread_exit((无效*)0);
}
INT主(INT ARGC,CHAR *的argv [])
{
    cpu_set_t cpuset;
    的pthread_t螺纹[2];
    INT I;
    I = 0;
    CPU_ZERO(安培; cpuset);
    CPU_SET(I,&放大器; cpuset);    在pthread_create(安培;螺纹[0],NULL,的start_routine,(无效*)ⅰ);
    pthread_setaffinity_np(线程[0],sizeof的(cpu_set_t),放大器; cpuset);
    I = 1;
    CPU_ZERO(安培; cpuset);
    CPU_SET(I,&放大器; cpuset);
    在pthread_create(安培;螺纹[1],NULL的start_routine,(无效*)ⅰ);
    pthread_setaffinity_np(线程[1],sizeof的(cpu_set_t),放大器; cpuset);
    了pthread_exit(NULL);
}


解决方案

法术它:

The linux one is just as clear:

There are however a few erroneous references which maintain otherwise. linux.die.net used to state sleep causes the process to wait.

这篇关于做睡睡眠功能的所有线程或只是一个谁打电话吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-22 23:17
查看更多