- 论坛徽章:
- 0
|
#include <stdio.h>
#include <pthread.h>
#include "stdlib.h"
pthread_cond_t cond;
pthread_mutex_t mutex;
void thread()
{
pthread_mutex_lock(&mutex);
int i;
pthread_cond_wait(&cond,&mutex);
for(i=0;i<5;i++)
{
printf("This is a pthread %u.\n",pthread_self());
}
pthread_mutex_unlock(&mutex);
}
void thread2()
{
int i;
for(i=0;i<5;++i)
{
printf("This is thread2 %u,\n",pthread_self());
sleep(1);
}
pthread_cond_broadcast(&cond);
}
int main(void)
{
pthread_t id[10];
int i,ret;
pthread_attr_t attr[10];
pthread_attr_init(&attr[0]);
pthread_attr_init(&attr[1]);
pthread_attr_init(&attr[2]);
pthread_attr_setdetachstate(&attr[0],PTHREAD_CREATE_DETACHED);
pthread_attr_setdetachstate(&attr[1],PTHREAD_CREATE_DETACHED);
pthread_attr_setdetachstate(&attr[2],PTHREAD_CREATE_DETACHED);
ret=pthread_create(&id[0],&attr[0],(void *) thread,NULL);
ret=pthread_create(&id[1],&attr[1],(void*)thread,NULL);
ret=pthread_create(&id[2],&attr[2],(void*)thread2,NULL);
// pthread_join(id[0],NULL);
// pthread_join(id[1],NULL);
// pthread_join(id[2],NULL);
sleep(7);
return (0);
}
开了两个thread,当thread中的加锁去掉之后,只会有一个输出,怎么理解?
[ 本帖最后由 cgp2001 于 2009-4-29 21:33 编辑 ] |
|