我创造了许多线程,都在等待自己的状况。运行时的每个线程都会发出下一个信号并再次进入等待状态。
但是,我希望当前运行的线程在指定的时间段(非常短的时间段)之后发出下一个条件。如何实现?
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++;
}
答案 0 :(得分:1)
如果条件没有等待,则发出条件信号 nothing 。因此,如果pthread'x'表示条件'cx'然后等待它,它将等待很长时间......除非其他一些线程也发出'cx'信号!
我不太确定我理解pthread表示你的“下一个条件”是什么意思,但是我发现在等待发出信号等待线程和线程休眠之后没有太大区别?