Блокировать текущий поток в pthread - PullRequest
1 голос
/ 12 марта 2012

Я написал следующий фрагмент кода для небольшого теста,

i=1;
static void *f1(void *p)
{
    if(cpu_usage()>50)
      {
         //this sleep is not working and thread is not entering this condition eventhough the cpu_usage() returns more than 50
         sleep(5);

      }

    while (i==0) {
        //i=0;
        //cout<<"inside"<<endl;


    } 
    i=0;

    //do work
    i=1;
    printf("i's value has changed to %d.\n", i);

    return NULL;
}

и назначил функцию с объектом потока,

int rc = pthread_create(&pthread1, NULL, f1, NULL);

Я хочу заблокировать текущий поток,это означает приостановить его исполнение.но мне кажется, что сон не работает.даже функция cpu_usage () не вызывается.но мне кажется, что сон в f1 не работает.ребята, скажите, в чем причина?

1 Ответ

3 голосов
/ 12 марта 2012

Вы присоединились к вашей теме от main?Вы должны позвонить pthread_join в созданной теме.Ваш основной поток, вероятно, выходит перед потоком, созданным pthread_create.Если вы не ожидаете его завершения, sleep вызов не имеет никакого эффекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...