(1)全局变量异步I/O实现父子进程交替数数

1)信号捕捉函数

2)main函数实现信号交替

3)程序实现

1》创建子进程,父进程等待1s,等待子进程完成捕捉函数注册(捕捉信号SIGUSR1)。父进程注册捕捉函数(捕捉信号SIGUSR2),父进程先执行一次捕捉函数,将标志位flag置1,等待1s;

2》flag为1时,父进程完成数数,父进程给子进程发送SIGUSR1信号,并将flag置0;

3》子进程捕捉函数捕捉到SIGUSR1信号,执行捕捉函数,令flag为1,等待1s。子进程向父进程发送SIGUSR2,置flag为0;

4》父进程捕捉SIGUSR2,执行捕捉函数,父进程向子进程发送SIGUSR2信号,依次反复...

4)运行结果

5)如果把父子捕捉函数之间的sleep(1)去掉,则程序可能运行出错

分析:当函数执行完kill(pid,SIGUSR1);给此时若父进程失去cpu,则子进程执行数数,将flag置1,此时子进程给父进程发送SIGUSR2。此时如果父进程获得cpu,此时父进程执行信号捕捉函数,flag置1,随后flag置零,程序结束。

原因:引入全局变量flag的原因。

(2)可/不可重入函数

  一个函数在被调用执行期间(尚未调用结束),由于某种时序该程序又被重复调用,称为重入(递归调用)。 

定义可重入函数:1)不能含有全局变量和static变量,不能使用malloc和free函数。

2)信号捕捉函数为可重入函数。

3)信号处理程序可以调用的可重入函数可参阅man 7 signal

不可重入函数大都包含:1)静态数据结构。2)调用malloc和free函数。3)标准的I/O函数。

linux操作系统之全局异步IO及可重入/不可重入函数相关推荐

  1. linux 内核io操作,关于Linux内核中的异步IO的使用

    我们都知道异步IO的作用,就是可以提高我们程序的并发能力,尤其在网络模型中.在linux中有aio的一系列异步IO的函数接口,但是这类函数都是glibc库中的函数,是基于多线程实现,不是真正的异步IO ...

  2. 高级IO--1 ---(五种典型IO,阻塞IO,非阻塞IO,信号驱动IO,异步IO, IO多路转接)

    高级IO: 五种典型IO: 阻塞IO/非阻塞IO/信号驱动IO/异步IO/IO多路转接 IO多路转接模型:select/poll/epoll 五种典型IO 阻塞IO IO操作的流程:等待IO操作条件具 ...

  3. oracle数据库同步异步优劣点,ORACLE数据库异步IO介绍

    异步IO概念 Linux 异步 I/O (AIO)是 Linux 内核中提供的一个增强的功能.它是Linux 2.6 版本内核的一个标准特性,当然我们在2.4 版本内核的补丁中也可以找到它.AIO 背 ...

  4. Go 与异步 IO - io_uring 的思考

    本来准备写一篇详细关于 io_uring 的中文文章,不过在使用上官方的一些文章写的已经非常详细,简单的拿来翻译感觉又失去了乐趣 于是便借鉴 liburing,配合 Go 提供的并发机制实现了一个 g ...

  5. 一步一步学linux操作系统: 32 输入与输出系统_ 块设备二_直接 I/O,缓存 I/O 与 块设备数据写入请求

    直接 I/O 与 缓存 I/O 可以参见 https://blog.csdn.net/leacock1991/article/details/108035136 对于 ext4 文件系统,最后调用的是 ...

  6. 高性能异步IO机制:IO_URING

    高性能异步IO机制:IO_URING 一.前言 1.1 异步IO机制 Linux内核提供的IO机制大都是同步实现的,如常规的read/write/send/recv等系统调用.同步IO机制存在着一定的 ...

  7. vertx web连接超时 阻塞_Flink之基于Vertx的Mysql异步IO

    导读 在流计算中,如果以事件流为主,关联一些维度信息,就需要根据每个事件中的关键信息去数据库执行一次查询.正常的思路可能是通过mapFunction以阻塞的方式查询数据库,等待数据结果返回,然后执行下 ...

  8. 嵌入式linux软件专利,一种嵌入式Linux操作系统网络加速运行的系统及方专利_专利查询 - 天眼查...

    1.一种嵌入式Linux操作系统网络加速运行的系统,其特征在于,主要包括以下单元:应用程序单元.Lwip函数库单元.系统接口单元.Linux系统单元.底层硬件接口单元.硬件平台单元.物理硬件网络设备单 ...

  9. 操作系统与存储:解析Linux内核全新异步IO引擎io_uring设计与实现

    作者:draculaqian,腾讯后台开发工程师 引言 存储场景中,我们对性能的要求非常高.在存储引擎底层的IO技术选型时,可能会有如下讨论关于IO的讨论. http://davmac.org/dav ...

最新文章

  1. 2022-2028年中国实心轮胎行业市场研究及前瞻分析报告
  2. php+redis+两种驱动,redis的php驱动两种方式
  3. KEIL5.11安装小结
  4. Password-less logins with OpenSSH
  5. linux软件升级直接替换,Linux几个命令的升级替代品
  6. Redis持久化:AOF和RDB
  7. 计算机学业测试答案解析,计算机测试题及答案.doc
  8. mysqld 多线程 用pstree -p 显示
  9. VUE3模板ref引用子组件或者子组件的方法
  10. Idea Intellij 常用快捷键
  11. Bailian2739 计算对数【对数】
  12. v-model和:model的区别
  13. 算法设计与分析基础 第八章谜题
  14. 监控网页的卡顿与崩溃
  15. win10配置gitee和github
  16. hui后台框架html页面中的图标,HUI
  17. 基于Java毕业设计校园社团管理平台演示录像2021源码+系统+mysql+lw文档+部署软件
  18. 七夕了,男朋友说他想学学算法~
  19. Java学习方法的一点个人见解-完整版
  20. AndroidStudio SVN 文件忽略

热门文章

  1. 课时2.浏览器和服务器(了解)
  2. 【区块链Go语言实现】Part 1:区块链基本原型
  3. 洛谷 P1757 通天之分组背包
  4. CachedIntrospectionResults 初始化
  5. HDU2602 (0-1背包)
  6. 在struts2中push方法的使用_电脑使用中怎么截屏的几种方法
  7. slot多作用域 vue_详解Vue.js 作用域、slot用法(单个slot、具名slot)
  8. 计算机扬天m400c联想,【联想扬天M参数】联想扬天M系列台式电脑参数-ZOL中关村在线...
  9. php copy 文件夹,php删除与复制文件夹及其文件夹下所有文件的实现代码
  10. python2 print_Python2和Python3中print的不同点