
进程通信
文章平均质量分 83
LinuxG_G
90年程序员,坐标深圳某IT公司。对新技术充满兴趣,使用的编程语言:C/C++,python, Linux shell;
熟悉常见数据结构及算法,Linux编程,了解java,Android开发。
技能库:
STL, python, 多线程编程, TCP/IP, Linux shell
java, android, 数据库
爱好运动,兴趣比较广泛:basketball,badminton,swim,running等
博客主要用Github 及 csdn,欢迎交流。
联系方式:qq 754860961
展开
-
[转]C++11中的内存模型下篇 - C++11支持的几种内存模型
在本系列的上篇,介绍了内存模型的基本概念,接下来看C++11中支持的几种内存模型。 几种关系术语 在接着继续解释之前,先了解一下几种关系术语。 sequenced-before sequenced-before用于表示单线程之间,两个操作上的先后顺序,这个顺序是非对称、可以进行传递的关系。 它不仅仅表示两个操作之间的先后顺序,还表示了操作结果之间的可见性关系。两个操作A和操作B,如果有A sequenced-before B,除了表示操作A的顺序在B之前,还表示了操作A的结果操作B可见。 hap转载 2020-10-06 21:38:33 · 528 阅读 · 1 评论 -
[转]C++11中的内存模型上篇 - 内存模型基础
前段时间花了些精力研究C++11引入的内存模型相关的操作,于是把相关的知识都学习了一下,将这个学习过程整理为两篇文档,这是第一篇,主要分析内存模型的一些基础概念,第二篇展开讨论C++11相关的操作。 CPU架构的演进 早期的CPU,CPU之间能共享访问的只有内存,此时的结构大体如图: 随着硬件技术的发展,内存的访问已经跟不上CPU的执行速度,此时内存反而变成了瓶颈。为了加速读写速度,每个CPU也都有自己内部才能访问的缓存,结构变成了这样: 其中: 有多个CPU处理器...转载 2020-10-06 21:36:58 · 523 阅读 · 0 评论 -
进程与线程的区别与联系
进程:资源分配的基本单位,也是调度运行的基本单位线程:进程中执行运行的最小单位,线程是操作系统可识别的最小执行和调度单位两者的关系:1. 一个线程只能属于一个进程,而一个进程可以有多个线程2. 进程是资源分配的基本单位。同一进程中的所有线程共享该进程的资源包括:代码段(代码和常量), 数据段(全局及静态区),扩展段(堆存储)。但每个线程有自己的栈段(用于存放局部变量)。3. 生成一个线程(Linu...原创 2018-03-03 14:49:45 · 293 阅读 · 0 评论 -
共享内存
共享内存是IPC形式中最快的方式。一旦将这样的内存区映射到共享它的进程的地址空间,这些进程间数据的传递就不再涉及内核。然而往该共享内存区存放信息或从中取走信息的进程间通常需要某种方式的同步。 实现共享内存的方式:利用mmap函数、使用Posix共享内存区、使用SystemV共享内存区,下面分别介绍。 1.1 利用mmap进行内存映射 作用:open文件之后调用mmap把它映射原创 2015-11-22 21:54:02 · 558 阅读 · 0 评论 -
管道和FIFO
管道和FIFO 1.1 管道和FIFO简介 管道是最初的unixIPC形式,广义的管道包含无名管道(狭义的管道)和有名管道(FIFO) 无名管道采用pipe函数创建,只能由亲缘关系的进程使用;有名管道突破了亲缘关系的限制,可以在不同进程间实现数据共享,管道和FIFO都是使用通常的read和write函数访问的,其由mkfifo函数创建,然原创 2015-09-26 21:36:41 · 561 阅读 · 0 评论 -
system V信号量
相对于Posix信号量,system V信号量提供了更为丰富的操作,如Posix信号量一次只能增减1,而system V则没有此限制;另外,可以用一个函数(semget)创建一组(多个)信号量,而Posix信号量一次只能创建一个;因此可用其模拟Posix信号量。功能丰富的同时也决定了System V信号量的复杂性。 1) 相关函数: 头文件: 创建或打开:semget 操作:s原创 2015-10-18 11:16:00 · 624 阅读 · 0 评论 -
System V消息队列
System V消息队列使用消息队列标识符标识,与POSIX一样,具有足够权限的进程可以往队列发送消息,具有足够特权的进程可以从一个给定队列读取信息,其具有随内核的持续性。与管道不一样的是,发送下一个消息前不要求某个进程正在等待上一个消息的到达。下面介绍下相关函数: 1) 头文件: 2) 创建或访问消息队列: int msget(key_t key, int of原创 2015-10-01 17:52:39 · 546 阅读 · 0 评论 -
system函数和fork-exec机制
system函数 使用man system查看帮助如下: NAME system -execute a shell command SYNOPSIS #include intsystem(const char *command); DESCRIPTION system() executes a comman原创 2015-08-30 16:29:05 · 1451 阅读 · 0 评论 -
POSIX信号量
信号量是一种用于提供不同进程或统一进程间不同线程同步手段的原语,其操作包括P操作(将信号量的值-1)和V操作(将信号量值+1),其典型应用场景为多个生成者和多个消费者的情况,也用于控制多个进程的并发数。POSIX信号量包含两种类型: a) POSIX有名信号量:使用PosixIPC名字标识 相关函数: 头文件 #include 创建:sem_t*sem_open(const ch原创 2015-10-07 23:17:53 · 481 阅读 · 0 评论 -
POSIX消息队列
POSIX消息队列 消息队列可认为是一个消息链表,有写权限的线程可以往消息队列中写消息,有读权限的线程可以从队列中读取消息,从而实现数据共享。每个消息都是一条记录,具有以下属性: 优先级(无符号整数或长整数类型) 消息的数据部分长度 数据本身。 1、 相关函数 头文件:#include 创建和打开:mqd_t mq_open(const char *name, i原创 2015-09-27 19:52:04 · 724 阅读 · 0 评论 -
异步信号安全(可重入性)与线程安全
转载出处 http://www.cnblogs.com/zhaoyl/archive/2012/10/03/2711018.html 1. 三个概念,线程安全,可重入,信号安全 先简单提一下, 线程安全,主要是针对数据竞争来说的,就是说:如果数据不需要共享,那就让每个线程私有;如果需要共享,那就加锁。 信号安全,其实也就是异步信号安全,是说线程在信号处理转载 2015-08-02 15:00:34 · 671 阅读 · 1 评论