是否存在类似于pthread_cond_timedwait的定时信号?

时间:2014-09-03 19:58:37

标签: multithreading pthreads

我创造了许多线程,都在等待自己的状况。运行时的每个线程都会发出下一个信号并再次进入等待状态。

但是,我希望当前运行的线程在指定的时间段(非常短的时间段)之后发出下一个条件。如何实现?

void *threadA(void *t)
{
    while(i<100)
    {
        pthread_mutex_lock(&mutex1);
        while (state != my_id )
         {         
            pthread_cond_wait(&cond[my_id], &mutex1);
         }
         // processing + busy wait

        /* Set state to i+1 and wake up thread i+1 */
        pthread_mutex_lock(&mutex1);
        state = (my_id + 1) % NTHREADS;//usleep(1); 

        // (Here I don't want this sleep. I want that this thread completes it processing and signals next thread a bit later.)
        /*nanosleep(&zero, NULL);*/

        pthread_cond_signal(&cond[(my_id + 1) % NTHREADS]); // Send signal to Thread (i+1) to awake 

        pthread_mutex_unlock(&mutex1);
        i++;

    } 

1 个答案:

答案 0 :(得分:1)

如果条件没有等待,则发出条件信号 nothing 。因此,如果pthread'x'表示条件'cx'然后等待它,它将等待很长时间......除非其他一些线程也发出'cx'信号!

我不太确定我理解pthread表示你的“下一个条件”是什么意思,但是我发现在等待发出信号等待线程和线程休眠之后没有太大区别?