Linux--线程 共享内存空间

线程_共享内存空间

c 复制代码
//线程_共享内存空间

#include <stdio.h>
#include <pthread.h>

int g_data = 0;



void *func1(void *arg)
{
	printf("t1: %ld thread is create!\n",(unsigned long)pthread_self());
	printf("t1: param is %d \n",*((int *)arg));

	while(1){
		printf("t1: %d\n",g_data++);
		sleep(1);
	}
}

void *func2(void *arg)
{
	printf("t2: %ld thread is create!\n",(unsigned long)pthread_self());
	printf("t2: param is %d \n",*((int *)arg));
	
	while(1){
		printf("t2: %d\n",g_data++);
		sleep(1);
	}
}

int main()
{
	int ret;
	int param = 100;
	pthread_t t1;
	pthread_t t2;
	
	int *pret = NULL;
	
	//创建线程
	ret = pthread_create(&t1,NULL,func1,(void *)&param);//调用func1函数
	if(ret == 0){
		printf("main: create t1 success! \n");
	}
	
	ret = pthread_create(&t2,NULL,func2,(void *)&param);//调用func2函数
	if(ret == 0){
		printf("main: create t2 success! \n");
	}
	
	printf("main: %ld\n",(unsigned long)pthread_self());
	
	while(1){
		printf("main: %d\n",g_data++);
		sleep(1);
	}
	
	//等待
	pthread_join(t1,(void **)&pret);
	pthread_join(t2,(void **)&pret);
	
	return 0;
}

运行结果:

bash 复制代码
main:create t1 success !
main:create t2 success !
main 139811894569664 
main:0
t1:139811811059456 thread is create !
t1:param is 100
t1:1
t2:139811802666752 thread is create !
t2:param is 100
t2:2
main:3
t1:4
t2:5
t1:6
main:7

如果使 t1 = 3时退出,运行结果发现:有的时候能捕获到 t1 == 3,退出线程t1;有的时候捕获不到,t1无法退出。

相关推荐
一匹电信狗5 小时前
【LeetCode_547_990】并查集的应用——省份数量 + 等式方程的可满足性
c++·算法·leetcode·职场和发展·stl
pride.li5 小时前
开发板和Linux--nfs服务挂载
linux·运维·服务器
looking_for__5 小时前
【Linux】应用层协议
linux·服务器·网络
BB_CC_DD6 小时前
Linux截图工具(ubuntu18.04+flameshot(火焰截图))
linux
鱼跃鹰飞6 小时前
Leetcode会员尊享100题:270.最接近的二叉树值
数据结构·算法·leetcode
Queenie_Charlie6 小时前
小陶的疑惑2
数据结构·c++·树状数组
云泽8086 小时前
不止是命令:Linux 高频指令实战 + 芯片架构底层逻辑
linux·运维·服务器
j_xxx404_6 小时前
Linux:基础IO
linux·运维·服务器
梵刹古音7 小时前
【C语言】 函数基础与定义
c语言·开发语言·算法
筵陌7 小时前
算法:模拟
算法