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

相关推荐
小O的算法实验室4 分钟前
2026年IEEE TITS,面向按需外卖配送调度的特定问题知识与基于学习元启发式算法,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
加勒比海带667 分钟前
目标检测算法——农林行业数据集汇总附下载链接【Plant】
大数据·图像处理·人工智能·算法·目标检测
洛水水7 分钟前
【力扣100题】23. 螺旋矩阵
算法·leetcode·矩阵
云水一下15 分钟前
黑客的“猜密码”游戏:SSH暴力破解实战与Linux安全加固
linux·渗透测试·ssh·暴力破解
kebidaixu23 分钟前
OK3568开发板更新Ubuntu22.04方法总结
linux·运维·服务器
影sir34 分钟前
不同测试数据下,该如何选择算法
算法·深度优先
潇湘散客1 小时前
CAX软件插件化设计实现牛刀小试
c++·算法·图形学·opengl
速易达网络1 小时前
2026,视觉算法正在经历一场静默革命
算法
晚风予卿云月1 小时前
【Linux】Linux2.6 O(1)调度器超详解 | 进程切换+内核链表 | 面试必背
linux·运维·面试
WBluuue1 小时前
Codeforces 1094 Div1+2(ABCDE)
c++·算法