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无法退出。

相关推荐
jieshenai几秒前
Shell 脚本如何定位项目根目录——从一个 8 行的小脚本讲起
linux·运维
roman_日积跬步-终至千里5 分钟前
【算法3】二叉树中的最大路径和
算法
迷途之人不知返9 分钟前
自制第一个Linux小程序——进度条
linux
zbyyd12 分钟前
深入理解 Linux 文件 IO 与目录 IO:系统调用与库函数的本质区别
linux·c语言
XUEYUAN521221 分钟前
IP 池调度算法实战:代理池负载均衡、健康检查与失效剔除机制(2026)
tcp/ip·算法·负载均衡
无小道22 分钟前
算法——问题转化
算法
evans在进步27 分钟前
LeetCode 53 最大子数组和:一次遍历掌握 Kadane 算法
算法·leetcode·职场和发展
qetfw28 分钟前
Debian OpenLDAP 目录服务配置:DN、LDIF、ldapsearch 与认证验证
linux·运维·debian
小七在进步34 分钟前
数据结构:选择排序
数据结构·算法·排序算法
词却35 分钟前
Linux基础:Linux环境搭建与远程连接
linux