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

相关推荐
是小胡嘛31 分钟前
C++之Any类的模拟实现
linux·开发语言·c++
口袋物联1 小时前
设计模式之工厂模式在 C 语言中的应用(含 Linux 内核实例)
linux·c语言·设计模式·简单工厂模式
qq_479875432 小时前
X-Macros(1)
linux·服务器·windows
笨笨聊运维3 小时前
CentOS官方不维护版本,配置python升级方法,无损版
linux·python·centos
gfdhy4 小时前
【c++】哈希算法深度解析:实现、核心作用与工业级应用
c语言·开发语言·c++·算法·密码学·哈希算法·哈希
HIT_Weston4 小时前
39、【Ubuntu】【远程开发】拉出内网 Web 服务:构建静态网页(二)
linux·前端·ubuntu
百***06014 小时前
SpringMVC 请求参数接收
前端·javascript·算法
weixin_457760004 小时前
Python 数据结构
数据结构·windows·python
一个不知名程序员www5 小时前
算法学习入门---vector(C++)
c++·算法
云飞云共享云桌面5 小时前
无需配置传统电脑——智能装备工厂10个SolidWorks共享一台工作站
运维·服务器·前端·网络·算法·电脑