Linux:线程和互斥量
创始人
2025-05-28 20:52:50

#include
#include
#include
#include
#include

pthread_mutex_t mutex;
char buf[50];
void * start_routine (void * arg)
{
printf(“I am child pthread0 get para %d\n”,*(int *)arg);
int b = 1001;
pthread_mutex_lock(&mutex);
*(int )arg = b;
//pthread_mutex_unlock(&mutex);
int i = 0;
for(;i<50;i++)
{
usleep(rand()%3);
buf[i] = ‘0’;
}
pthread_mutex_unlock(&mutex);
//pthread_exit(&b);
return NULL;
}
void * start_routine1 (void * arg)
{
printf(“I am child pthread1 get para %d\n”,
(int *)arg);
int b = 1002;

pthread_mutex_lock(&mutex);
//*(int *)arg = b;
// pthread_mutex_unlock(&mutex);
int i = 0;
for(;i<50;i++)
{   usleep(rand()%3);buf[i] = '1';
}
pthread_mutex_unlock(&mutex);   
//*(int *)arg = b; 
//pthread_exit(&b);
return NULL;

}

int main(int argc, const char * argv[])
{

pthread_mutex_init(&mutex, NULL);
pthread_attr_t *attr;
int a = 9;
pthread_t thread[2]; //多线程一定要定义成数组
//int ret1 = pthread_create(&thread[1], NULL,start_routine1, (void*)&a);
int ret = pthread_create(&thread[0], NULL,start_routine, (void*)&a);
int ret1 = pthread_create(&thread[1], NULL,start_routine1, (void*)&a);
if(ret != 0 || ret1 != 0 )
{printf("pthread_create fail\n");
}
ret = pthread_detach(thread[0]);
ret1 = pthread_detach(thread[1]);       
// if(ret != 0 || ret1 != 0)
// {
//     printf("pthread_detach fail\n");
// }
ret = pthread_join(thread[0], NULL);//pthread_join会让主线程等待子线程执行
ret1 = pthread_join(thread[1], NULL);//pthread_join会让主线程等待子线程执行    
if(ret != 0 || ret1 != 0)
{perror("pthread_join");int c = EINVAL;printf("ret %d, ret1 %d EINVAL=%d\n ",ret,ret1,c);//设置了pthread_detach,主线程就无法回收子线程了,返回错误码22
}sleep(1);//如果没加pthread_join,主线程要sleep等一下子线程,不然子线程没机会打印出来
int i = 0;
for(;i<50;i++)
{   printf("%c",buf[i]);
} 
printf("\n");pthread_mutex_destroy(&mutex);
printf("a= %d\n",a);
printf("pthread 0 exit with %d, pthread 1 exit with %d \n ",ret,ret1);
return 0;

}

在这里插入图片描述

相关内容

热门资讯

最新或2023(历届)微淘运营... 4.2.2丶文章发出之后的数据: (补充一句:数据不是非常准确,因为微信也有群发信息的) 上图可...
最新或2023(历届)微淘运营... 标题丶图片丶内容都要把好观的同时,认真创造沟通性话题以进行一对一问答,把精力投入到用户研究丶需求把握...
最新或2023(历届)微淘运营... 1.1.2丶无法对应一个客户的评论,无法进行一对一有效沟通; 1.1.3丶每次提醒对应不到实际的客...
最新或2023(历届)微淘运营... 3.3 信任来源与沟通 微淘既然为我们架起了与客户之间的沟通桥梁,那么我们就利用文章创造更多的沟通...
最新或2023(历届)微淘运营... 我们如何抓住这些点呢? 首先你必须要找清晰的图片而且还要和标题及内容遥相呼应,目标受众90后的人占...