- 论坛徽章:
- 0
|
本帖最后由 senlin8350 于 2012-09-08 10:49 编辑
#include <pthread.h>
struct msg{
struct msg *m_next;
};
struct msg *workq;
pthread_cond_t qready = PTHREAD_COND_INITIALIZER;
pthread_mutex_t qlock = PTHREAD_MUTEX_INITIALIZER;
void process_msg(void)
{
struct msg *mp;
for(; ; ){
pthread_mutex_lock (&qlock);
while(work == NULL)
pthread_cond_wait(&qready, &qlock )
mp = workq;
workq = mp->next;
pthread_mutex_unlock(&qlock);
}
}
void
enqueue_msg(struct msg *mp)
{
pthread_mutex_lock(&qlock);
mp->m_next = workq;
workq = mp;
pthread_mutex_unlock(&qlock);
pthread_cond_signal(&qready);
} |
|