- 论坛徽章:
- 0
|
明白了,谢谢大家的关注.依赛特小子所言甚是,我重写了代码,与期望的结果相同.
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
pthread_mutex_t mutex;
pthread_cond_t cond;
unsigned int count=0;
void *thread(void * arg)
{
int i;
for(i=0;i<50;i++)
{
printf("This is a pthread.\n");
sleep(1);
pthread_mutex_lock(&mutex);
while(count == 0)
pthread_cond_wait(&cond, &mutex);
count++;
printf("This is a pthread and the count = %d.\n",count);
pthread_mutex_unlock(&mutex);
}
return NULL;
}
int main(void)
{
pthread_t id;
int i,ret;
pthread_mutex_init(&mutex, NULL);
pthread_cond_init(&cond, NULL);
ret=pthread_create(&id,NULL,thread,NULL);
if(ret!=0){
printf ("Create pthread error!\n");
exit (1);
}
for(i=0;i<50;i++)
{
sleep(1);
pthread_mutex_lock(&mutex);
if(!(count == 0))
pthread_cond_signal(&cond);
count--;
printf("This is the main process and the count = %d.\n",count);
pthread_mutex_unlock(&mutex);
}
pthread_join(id,NULL);
pthread_cond_destroy(&cond);
return (0);
} |
|