- 论坛徽章:
- 0
|
本帖最后由 zhutroy 于 2011-04-20 23:26 编辑
有两个线程,
一个是producer,有一段任务代码, 现在交给consumer执行。
一个是consumer,收到消息后执行代码。
consumer使用 SCHED_RR, 优先级是1, 两个线程使用pthread_cond_wait 和pthread_signal
做通信, 感觉速度比较慢,
如果producer自己执行consumer中的程序, 会快很多。
consumer的程序如下类似:
//consumer is a higher priority waiting thread.
consumer{
while(1) //可以这样做吗?
{
pthread_mutex_lock(&mutex);
if(empty)
pthread_cond_wait(&cond_full, &mutex);
//execute some code
pthread_cond_signal(&cond_empty);
pthread_mutex_unlock(&mutex);
}
}
//producer is call by high level application.
producer
{
pthread_mutex_lock(&mutex);
if(full)
pthread_cond_wait(&cond_empty, &mutex);
//execute some code
pthread_cond_signal(&cond_full);
pthread_mutex_unlock(&mutex);
} |
|