linux--线程共享内存

news2024/12/27 10:08:21

Linux线程共享内存空间是指多个线程可以访问同一个内存区域,这些线程共享该内存区域的内容。

代码:


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

// share memory


int data = 0; //定义一个全局变量data


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

	while(1){
		printf("线程t1拿到 data = %d\n",data++);
		sleep(1);
	}





}



void *fun2(void *arg)
{
	printf("t2:thread id is:%ld\n",(unsigned long)pthread_self());
	printf("t2:is param:%d\n",*((int *)arg));

	while(1){
		printf("线程t2拿到 data = %d\n",data++);
		sleep(1);
	}





}


int main()
{
	int ret;

	pthread_t t1;

	pthread_t t2;
	int param = 100;
	if(ret = pthread_create(&t1,NULL,fun1,(void *)&param) == 0){

		printf("main:creat t1 pthread successfully !\n");
	}


	if(ret = pthread_create(&t2,NULL,fun2,(void *)&param) == 0){

		printf("main:creat t2 pthread successfully !\n");
	}

	printf("main:获取主程序的ID:%ld\n",(unsigned long)pthread_self());

	while(1){

		printf("主进程main拿到 data = %d\n",data++);
		sleep(1);


	}
	pthread_join(t1,NULL);
	pthread_join(t2,NULL);

	return 0;

}

结果:

对全局变量进行操作,共享内存空间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1156081.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SSM的开放性实验室管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;JSP 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

Redis代替session实现用户验证

一、Redis代替session实现用户验证。 下图是session的实现登录需要实现的代码模块&#xff0c;虽然可以实现完整功能&#xff0c;但是仍然存在一些问题。 在以往使用session当作用户验证的过程中&#xff0c;会有session共享的问题&#xff0c;每次承担请求的tomcat是不一样…

vins fusion 学习(更新中)

vins fusion 学习&#xff08;更新中&#xff09; RVIZ图像&#xff1a; 绿色的是里程计路径 图像中红色的是特征点 红色框是相机 白色的小点是图像中的特征点对应到空间中的特征点 使用rosrun rqt_graph rqt_graph得到节点订阅图 可以看到rosbag发布了以下数据 imu&#xff…

「Dr. Bomkus 的试炼」排行榜说明

简要概括 七大区域&#xff0c;一个任务&#xff1a;六场扣人心弦的试炼&#xff0c;有一个休闲大厅作为每场试炼的起点。 试炼 排行榜&#xff1a;掌握每场试炼&#xff0c;攀登排行榜。 以 Ethos Point 来记分&#xff1a;每个试炼中的任务都会获得一个EP。 两种任务类型&am…

【算法练习Day34】整数拆分不同的二叉搜索树

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 整数拆分不同的二叉搜索树总…

VINS-Mono-VIO初始化 (五:视觉惯性对齐求解)

整体思想就是根据预积分的公式&#xff0c;把已知量和未知量各放到一边&#xff0c;因为前面的数据都是变换到 c 0 c_{0} c0​下的&#xff0c;不是真正意义上和重力对齐的世界坐标&#xff0c;然后位移和速度的预积分中会用到加速度计获取的重力加速度g&#xff0c;但是这个重…

Spring循环依赖处理

循环依赖是指两个或多个组件之间相互依赖&#xff0c;形成一个闭环&#xff0c;从而导致这些组件无法正确地被初始化或加载。这种情况可能会在软件开发中引起问题&#xff0c;因为循环依赖会导致初始化顺序混乱&#xff0c;组件之间的关系变得复杂&#xff0c;甚至可能引发死锁…

基于若依的ruoyi-nbcio流程管理系统增加仿钉钉流程设计(四)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 这里继续上面的章节&#xff0c;讲讲角色的选择与节点表单的选择。 1、角色的选择 加上下面选择角色的界…

低级语言汇编真的各个面不如汇编吗?

今日话题&#xff0c;低级语言汇编真的各个面不如C语言吗&#xff1f;C语言因其可移植性、开发效率和可读性而在各领域广泛使用&#xff0c;市场占有率极高。然而&#xff0c;汇编语言在特定场景下仍然具有独特优势&#xff0c;稳固地占据一席之地。如果你对这方面感兴趣&#…

使用轻量应用服务器搭建在线写作利器StackEdit

使用轻量应用服务器搭建在线写作利器StackEdit 前言 我经常会分享自己的一些搭建记录&#xff0c;所以我需要一个比较顺手的&#xff0c;Markdown编辑器。最开始我选择使用了CodiMD&#xff0c;但是我慢慢发现&#xff0c;我有一些快速功能CodiMD无法实现&#xff0c;我就转而…

Nginx热升级的完整流程

热升级的完整流程如下&#xff1a; 1.将旧的Nginx二进制文件换成新的Nginx二进制文件&#xff0c;注意需要把旧的Nginx二进制备份好。 2.向master进程发送USR2信号。 3.master进程修改pid文件&#xff0c;加.oldbin后缀。 4.master进程用新的nginx文件启动新的master进程。 5.向…

shell编程基础(第15篇:文件操作相关命令)

前言 计算机磁盘中存储的是文件&#xff08;目录也算文件的一种&#xff09;&#xff0c;常见的文件操作命令有cd、ls、mkdir、rm、等等涉及到文件的增删改查&#xff0c;今天一起学习常见的文件操作命令&#xff0c;come on baby&#xff01; cd change directory的首字母缩写…

php收发邮件的多种方法?

1、添加扩展&#xff1a; # 第一种&#xff1a; composer require php-imap/php-imap # 第二种&#xff1a; composer require phpmailer/phpmailer2、这里采用第二种方式&#xff1a; <?php declare(strict_types1);namespace App\Controller\v1\email;use App\Controll…

Java中String的split函数的详解及应用

文章目录 一、 split函数详解二、应用 一、 split函数详解 split(String regex)为java.lang.String类的方法&#xff0c;其功能通俗的说就是以传入的分隔符参数拆分该字符串 方法具体为&#xff1a; public String[] split(String regex) {return split(regex, 0); }方法内部…

pycharm怎么运行python代码

创建项目 在PyCharm中&#xff0c;你可以创建一个项目来组织和管理你的Python代码。项目是一个存放代码文件的文件夹&#xff0c;它可以包含多个模块和包。 启动PyCharm后&#xff0c;选择“Create New Project”来创建一个新项目。 在弹出的对话框中&#xff0c;选择项目的位…

作品展示-

------------校二手交易平台---------- ---------植物大战僵尸修改器------------- -------------商品进销存系统------------- --------汽车车牌号码识别系统----------- ------------示波器---------------- ---------激光数据传输仪------------ -----------32*64双色点阵屏…

听GPT 讲Rust源代码--library/std(9)

题图来自 Rust 101 — Everything you need to know about Rust[1] File: rust/library/std/src/sys/wasi/io.rs 在Rust源代码中&#xff0c;rust/library/std/src/sys/wasi/io.rs文件的作用是实现了与WASI&#xff08;WebAssembly System Interface&#xff09;IO相关的功能。…

Leetcode2086. 从房屋收集雨水需要的最少水桶数

Every day a Leetcode 题目来源&#xff1a;2086. 从房屋收集雨水需要的最少水桶数 解法1&#xff1a;贪心 我们可以对字符串 hamsters 从左到右进行一次遍历。 每当我们遍历到一个房屋时&#xff0c;我们可以有如下的选择&#xff1a; 如果房屋的两侧已经有水桶&#xff…

行业追踪,2023-10-31

自动复盘 2023-10-31 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

Linux0.11内核源码解析-exec.c

主要实现对二进制可执行文件和shell文件的加载和执行&#xff0c;其中主要的函数是do_execve(),它是系统中断调用int 0x80的功能号__NR_execve()调用&#xff0c;是exec()函数的主要实现以下几点功能&#xff1a; 1.执行对参数和环境参数空间页面的初始化操作&#xff0c;初始…