参考资料: 1.博客1:https://blog.csdn.net/zhou1021jian/article/details/71531699 2.博客2:https://blog.csdn.net/weixin_40039738/article/details/81145247 本文主要介绍下面函数的用法和代码示例 pthread_create 创建线程 pthread_exit 终止线程 pthread_join 回收进程 pthread_detach 线程分离 pthread_attr_s…
参考资料: 1.博客1:https://www.jianshu.com/p/755338d11865 mmap:一种内存映射文件的方法 memory map 父子进程和无亲缘关系的进程,都可以将自身用户空间映射到同一个文件或匿名映射到同一片区域,实现进程间通信. 函数原型: #include <sys/mman.h> 创建映射: void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset); 释…
前言: Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间.任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication). 常用的进程间通信方式有: ① 管道 (使用最简单) ② 信号 (开销最小) ③ 共享映射区 (无血缘关系) ④ 本地套接字…
参考: 1.博客1:https://www.pianshen.com/article/4305691855/ fork:在原进程的基础上"分叉"出一个子进程,即创建一个子进程. NAME fork - create a child process SYNOPSIS #include <unistd.h> pid_t fork(void); DESCRIPTION fork() creates a new process by duplicating the calling…
当使用fork创建多个进程后,需要解决子进程回收的问题.wait和waitpid函数就是做这个工作的. 假设子进程没有合理的回收,可能会带来两个问题: 1.孤儿进程(父进程挂了,子进程活着),孤儿进程会被init进程回收,可以理解其没有危害,不会占用资源. 2.僵尸进程(子进程挂了,父进程活着),僵尸进程是当父进程活着时,子进程没有其他进程帮忙回收后产生的"有害进程",所以僵尸必须要回收,否则僵尸进程太多了会占用系统资源.此时就需要用到wait或waitpid函数. wait和wait…
学习大概就是不断迭代.重构的过程,不复习的学习是不负责任的,亦是无用的. 本系列博客主要作为个人记录,主要是贴图和代码,不做详细解释,以后有时间可能会重写:从下一篇开始上代码,代码可以运行是对自己的最低标准. 参考: 1.书籍1:<程序员的自我修养--链接.装载与库> 2.视频:https://www.bilibili.com/video/BV1Tt411T7Rs 3.博客1:https://www.cnblogs.com/wanghao-boke/p/11304734.html 进程控制块P…
并发编程基本模型 message passing和shared memory. 线程同步的四项原则 尽量最低限度地共享对象,减少需要同步的场合.如果确实需要,优先考虑共享 immutable 对象. 使用高级的并发编程构件,如TaskQueue.Producer-Consumer Queue.CountDownLatch等等. 不得已必须使用底层同步原语(primitives)时,只用非递归的互斥器和条件变量,慎用读写锁,不要用信号量. 除了使用 atomic 整数之外,不自己编写 lock-f…
前言 Linux多线程环境中的信号处理不同于进程的信号处理.一方面线程间信号处理函数的共享性使得信号处理更为复杂,另一方面普通异步信号又可转换为同步方式来简化处理. 本文首先介绍信号处理在进程中和线程间的不同,然后描述相应的线程库函数,在此基础上给出一组示例代码,以讨论线程编程中信号处理的细节和注意事项.文中涉及的代码运行环境如下: 本文通过sigwait()调用来“等待”信号,而通过signal()/sigaction()注册的信号处理函数来“捕获”信号,以体现其同步和异步的区别. 一  概念…
从今天起,开始学习进程间通信相关的东东,关于socket的编程先告一段落了,在学习进程间通信之前,首先先要了解一些概念,所以,这次不开始真正的代码编写,先纯理论,理解了为之后的更深入的学习可以打下良好的基础,下面进入正题: 实际上这也是进程之间的两种关系,在学习这两种关系之前,需要回顾一下顺序程序与并发程序的特征: 顺序程序特征: ①.顺序性 顺序程序执行的顺序是按照指令的先后顺序来执行的,当前的指令需依赖于前一条指令,并与前一条指令构成了一定的因果关系,后一条指令的执行一定要在前一条指令的基础…
更新2.0 二.多线程及服务器编程总结------linux多线程服务端编程 https://www.cnblogs.com/l2017/p/11335609.html 三.分布式编程总结------linux多线程服务端编程 https://www.cnblogs.com/l2017/p/11349002.html 四.c++总结------linux多线程服务端编程 https://www.cnblogs.com/l2017/p/11373315.html…