- 论坛徽章:
- 0
|
原帖由 timespace 于 2008-11-14 16:45 发表 ![]()
可否贴下测试代码?
#include<pthread.h>
#include<stdio.h>
#define HTCNT 2
pthread_mutex_t mutex;
int cnt=0;
int mpr[HTCNT];
pthread_t thread[HTCNT];
void *POO(void *v_pthread)
{
int mr=*(int *)v_pthread;
while(1)
{
pthread_mutex_lock(&mutex);
if(cnt<200)
{
printf("[%d][%d]\n",mr+1,++cnt);
}
else
{
break;
}
pthread_mutex_unlock(&mutex);
//usleep(10*1000);
}
}
int main()
{
int i;
if(pthread_mutex_init(&mutex,NULL)!=0)
{
return 0;
}
for(i=0;i<HTCNT;i++)
{
mpr=i;
if (pthread_create(&thread, NULL, POO, &mpr) != 0)
{
return 0;
}
}
getchar();
return 1;
}
上述代码仅为了验证标题,未对线程回收等。
代码打印结果仅有第一个线程的数据,如果去掉usleep(10*1000);前的注释,可以发现是线程轮流抢到lock |
|