#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
int var = 1001;
void * func (void *arg) {printf("I am thread,var=%d\n",var); // 1001var = 1005;printf("I am thread,var=%d\n",var); // 1005sleep(2); // 确保主控线程能够修改完成 该时间马上继续执行main函数printf("after sleep,I am thread,var=%d\n",var); // 1007return NULL; }
int main()
{pthread_t tid;pthread_create(&tid, NULL, func, NULL); //创建子线程sleep(1); // 确保子线程修改全局变量完成 该时间马上执行子线程回调函数printf("I am main thread,var=%d\n",var); //1005var = 1007;printf("I am main thread,var=%d\n",var); // 1007sleep(3); // 确保子线程执行倒数第2行完成 return 0;
}

结果: 1001 1005 1005 1007 1007

Linux学习之系统编程篇:练习验证线程共享全局变量相关推荐

  1. Linux学习之系统编程篇:对线程的基本认识

    (1)fork()后创建的子进程是父进程的拷贝,那么pthread_create,创建线程,创建的线程跟原进程有什么关系呢? fork 会通过拷贝产生新的虚拟地址空间(PCB 会变化),而 pthre ...

  2. Linux学习之系统编程篇:实现线程分离

    函数: int pthread_detach(pthread_t thread); // 参数:线程 ID 最大特点: (1)子进程会自己回收 PCB,因此调用该函数之后,不需要调用 pthread_ ...

  3. Linux学习之系统编程篇:单个线程的退出函数

    能否用 exit 来退出某个线程,exit 是用来退出进程的,因为父子线程共享同一地址空间,如果在某线程中使用,会使 所有线程全退出,因此需要使用别的函数 :pthread_exit (注意:子线程使 ...

  4. Linux学习之系统编程篇:创建线程函数

    所有线程函数相同点: (1)函数调用成功返回 0,失败返回错误号(但注意:不能用 perror 打印). (2) 头文件:#include <pthread.h> 编译时候需要使用线程库, ...

  5. Linux学习之系统编程篇:ps 和 kill 命令以及父子进程间数据共享模式

    一.ps 和 kill 命令 1.ps 命令 常用方式: ps aux :查看正在运行进程信息(主要查 pid). ps ajx :更加详细(PID. PPID:父进程 id. PGID:进程组 id ...

  6. Linux学习之系统编程篇:回收子线程资源

    子线程退出后,主控线程也是需要回收子线程资源的. 函数:pthread_ join 阻塞等待线程退出,获取线程退出状态函数说明: int pthread_join(pthread_t thread, ...

  7. Linux学习之系统编程篇:编写一个守护进程

    需求:写一个守护进程,每隔 2s 获取一次系统时间,将这个时间写入到磁盘文件 #include <stdio.h> #include <stdlib.h> #include & ...

  8. Linux学习之系统编程篇:守护进程(精灵进程、后台进程)

    一.背景 一般情况下,启动终端(shell),系统会创建一个会话(shell 进程是会长),经过后续各种操作,该会话中会存在多个进程组,每个进程组中也会有多个进程(父进程是组长),若此时关闭 shel ...

  9. Linux学习之系统编程篇:shm 共享内存及其操作函数

    一.shm 和 mmap 的区别 (1)mmap 是在磁盘上建立一个文件,每个进程地址空间中开辟出一块空间进行映射.shm 每个进程最终会映射到同一块物理内存.shm 保存在物理内存,这样读写的速度最 ...

最新文章

  1. 5年Python功力,总结了10个开发技巧
  2. Android View 的onDraw 和 draw 一定会调用吗?
  3. 在腾讯工作半年,我获得了什么?
  4. presto读取oracle,Presto源码分析之数据类型
  5. 深入理解JVM类文件格式
  6. SimpleExecutor.doQuery()-执行的StatementHandler 的query()方法
  7. 20155212 2017-2018-1 《信息安全系统设计》第8周课下作业
  8. mybatis源码学习(三):MappedStatement的解析过程
  9. acwing199.余数之和(除法分块)
  10. Java统计做题正确率_ResNet:训练期间的准确率为100%,但使用相同数据的预测准确率为33%...
  11. RocketMq : 消费消息的两种方式 pull 和 push
  12. mysql查询班级作业提交情况_MySQL中查询获取每个班级成绩前三名的学生信息
  13. 上传图片的方法(大白话讲解)
  14. 锚文本链接用html怎么做,锚文本链接是什么?
  15. 人工智能将从5大方面改变企业IT
  16. 实时车辆行人多目标检测与跟踪系统-上篇(UI界面清新版,Python代码)
  17. 小结一篇-(秀我工作一年)
  18. APP调用支付宝客户端发起支付
  19. matlab mex入门简介
  20. 女王大学 计算机专业,伦敦玛丽女王大学计算机科学专业

热门文章

  1. 将隐式神经表示(INR)用于2D图像
  2. MindSpore感恩节重磅福利,华为Mate 40E送送送!
  3. 让人惊叹的Johnson-Lindenstrauss引理:理论篇
  4. 深度学习预训练模型可解释性概览
  5. 当我们谈论「Chatbot」时,我们在读什么? | 论文集精选 #05
  6. Linux文件系统层次结构
  7. python美化输出模块_Python 格式化输出 ( 颜色 )
  8. 怎么获取web项目的webroot根目录下面的文件夹的路径?
  9. javaweb和ajax使用查询出来的数据做下拉菜单_不会用Excel做数据筛选,老板叼的你没话说!...
  10. GitHub轻松阅读微服务实战项目流程详解【第一天:数据库表设计及其环境搭建、项目运行】