
pthread_t mythd
if(0!=pthread_create(&mythd,0,threadTest,0))printf("create error\n")
pthread_create函数建立线程,并将新建线程ID保存到mythd中。
如果将新建线程ID向地址0保存,会发生越界错误。
while((p=fork())==-1)//创建进程if(p==0)
{
ret=pthread_create(&id1,NULL,(void *)pthread1, NULL)//创建线程
if(ret!=0) perror("线程1创建失败")
ret=pthread_create(&id2,NULL,(void *)pthread2, NULL)
if(ret!=0) perror("线程2创建失败")
ret=pthread_create(&id3,NULL,(void *)pthread3, NULL)
if(ret!=0) perror("线程3创建失败")
......
pthread_join(id1,NULL)
pthread_join(id2,NULL)
pthread_join(id3,NULL)
..........//结束线程
exit(0)
}
void pthread1(void *arg)
{
while(time(NULL) <time_flag) //可以在这里判断总接入次数,现在是时间判断
{
if(pthread_mutex_lock(&mutex)!=0)//锁定数据 可以在这里判断接入次数,现在是写锁定判断
{
perror("锁定失败")
}
else printf("线程1:锁定数据量\n")
{
}
if(pthread_mutex_unlock(&mutex)!=0) //数据解锁 这里可以判断不超过3次锁定解锁
{
perror("解锁失败")
}
else
printf("线程1:我已解锁\n")
sleep(4)
}
}
其他的你自己补充吧,自己定义几个全局变量控制线程锁定解锁逻辑关系就行
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)