Linux--线程 共享内存空间

news/2025/3/6 3:43:59/

线程_共享内存空间

//线程_共享内存空间#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;
}

运行结果:

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


http://www.ppmy.cn/news/1117421.html

相关文章

享元模式模式简介

概念&#xff1a; 享元模式&#xff08;Flyweight pattern&#xff09;是一种结构型设计模式&#xff0c;旨在通过共享对象来减少内存使用和提高性能。它通过将对象的状态分为可共享的内部状态和不可共享的外部状态&#xff0c;来实现对象的共享。内部状态可以被多个对象共享&…

【日常业务开发】Java实现异步编程

【日常业务开发】Java实现异步编程 Java实现异步编程什么是异步异步的八种实现方式异步编程线程异步Future异步CompletableFuture实现异步Spring的Async异步Spring ApplicationEvent事件实现异步消息队列ThreadUtil异步工具类Guava异步 CompletableFuture异步编排工具类创建异步…

03贪心:摆动序列

03贪心&#xff1a;摆动序列 376. 摆动序列 局部最优&#xff1a;删除单调坡度上的节点&#xff08;不包括单调坡度两端的节点&#xff09;&#xff0c;那么这个坡度就可以有两个局部峰值。 整体最优&#xff1a;整个序列有最多的局部峰值&#xff0c;从而达到最长摆动序列。…

bootstrap table export的使用,bootstrap table表格前端导出

第一步&#xff1a;html页面导入2个JS文件 1.依赖文件tableExport.js&#xff0c;该文件的内容如下&#xff1a; use strict;(function ($) {$.fn.tableExport function (options) {let docData;const defaults {csvEnclosure: ",csvSeparator: ,,csvUseBOM: true,dat…

【Node.js】数据库配置与操作、Session实现原理、JWT实现原理:

文章目录 一、数据库配置与操作【1】 数据库的基本操作【2】 使用 mysql 模块操作 MySQL 数据库 二、Session实现原理【1】HTTP 协议的无状态性【2】Cookie【3】Session 的工作原理【3】在 Express 中使用 Session 认证 三、JWT实现原理【1】JWT 的工作原理【2】JWT 的组成部分…

HTTPS 证书生成脚本详细讲解

前言 HTTPS证书的作用是用于保障网站的安全性。在HTTPS协议中&#xff0c;通过使用证书来实现客户端与服务器之间的认证和数据加密&#xff0c;防止中间人攻击、信息泄漏等安全问题的发生。https证书也就是SSL证书&#xff0c;我们首先要确定好需要 https 安全连接的域名&…

会员管理系统H5-02会员充值

上一篇我们讲解了移动端开卡的业务&#xff0c;会员卡开通后下一个业务就是充值。充值的逻辑我们已经在PC端实现过&#xff0c;本篇我们沿用PC端的逻辑&#xff0c;在充值的时候新加一个业务积分。 1 数据源添加 给会员充值的时候&#xff0c;我们按照同等额度赠送会员相应的…

365天搞定八股文——Day 002 内核态和用户态的区别

什么是内核态和用户态 为了避免操作系统和关键数据被用户程序破坏&#xff0c;将处理器的执行状态分为内核态和用户态。 内核态是操作系统管理程序执行时所处的状态&#xff0c;能够执行包含特权指令在内的一切指令&#xff0c;能够访问系统内所有的存储空间。 用户态是用户…