时间:2022-10-09 18:12:36 | 浏览:517
对于有线程系统:
(1)进程是资源分配的独立单位
(2)线程是资源调度的独立单位
对于无线程系统:
(1)进程是资源调度、分配的独立单位
管道(PIPE)
(1)有名管道:一种半双工的通信方式,它允许无亲缘关系进程间的通信
①优点:可以实现任意关系的进程间的通信
②缺点:a、长期存于系统中,使用不当容易出错;b、缓冲区有限
(2)无名管道:一种半双工的通信方式,只能在具有亲缘关系的进程间使用(父子进程)
①优点:简单方便
②缺点:a、局限于单向通信;b、只能创建在它的进程以及其有亲缘关系的进程之间;c、缓冲区有限
信号量(Semaphore):一个计数器,可以用来控制多个线程对共享资源的访问
①优点:可以同步进程
②缺点:信号量有限
信号(Signal):一种比较复杂的通信方式,用于通知接收进程某个事件已经发生
消息队列(Message Queue):是消息的链表,存放在内核中并由消息队列标识符标识
①优点:可以实现任意进程间的通信,并通过系统调用函数来实现消息发送和接收之间的同步,无需考虑同步问题,方便
②缺点:信息的复制需要额外消耗 CPU 的时间,不适宜于信息量大或操作频繁的场合
共享内存(Shared Memory):映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问
①优点:无须复制,快捷,信息量大
②缺点:a、通信是通过将共享空间缓冲区直接附加到进程的虚拟地址空间中来实现的,因此进程间的读写操作的同步问题;b、利用内存缓冲区直接交换信息,内存的实体存在于计算机中,只能同一个计算机系统中的诸多进程共享,不方便网络通信
套接字(Socket):可用于不同计算机间的进程通信
①优点:
a、传输数据为字节级,传输数据可自定义,数据量小效率高;
b、传输数据时间短,性能高;
c、适合于客户端和服务器端之间信息实时交互;
d、可以加密,数据安全性强;
②缺点:需对传输的数据进行解析,转化成应用级的数据。
包括互斥锁/量(mutex)、读写锁(reader-writer lock)、自旋锁(spin lock)、条件变量(condition)
(1)互斥锁/量(mutex):提供了以排他方式防止数据结构被并发修改的方法。
(2)读写锁(reader-writer lock):允许多个线程同时读共享数据,而对写操作是互斥的。
(3)自旋锁(spin lock)与互斥锁类似,都是为了保护共享资源。互斥锁是当资源被占用,申请者进入睡眠状态;而自旋锁则循环检测保持者是否已经释放锁。
(4)条件变量(condition):可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件的测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用。
(1)无名线程信号量
(2)命名线程信号量
信号机制(Signal):类似进程间的信号处理
屏障(barrier):屏障允许每个线程等待,直到所有的合作线程都达到某一点,然后从该点继续执行。
线程间的通信目的主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制
私有:地址空间、堆、全局变量、栈、寄存器
共享:代码段,公共数据,进程目录,进程 ID
私有:线程栈,寄存器,程序计数器
共享:堆,地址空间,全局变量,静态变量
对比
优劣
选择
(1)需要频繁创建销毁的优先用线程
(2)需要进行大量计算的优先使用线程
(3)强相关的处理用线程,弱相关的处理用进程
(4)可能要扩展到多机分布的用进程,多核分布的用线程
(5)都满足需求的情况下,用你最熟悉、最拿手的方式
今天的分享就到这里了,大家要好好学C++哟~
写在最后:对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!
编程学习书籍分享:
编程学习视频分享:
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!
2022年8月22日,据IT桔子,数数科技于近日完成C+轮融资。本轮融资的投资方为GGV纪源资本,金额为1亿元。企查查信息显示,数数科技创立于2015年,是国内专业的游戏大数据分析服务商。数数科技以“让数据价值触手可及”为使命,聚焦游戏行业
首先必须明确:C语言是面向过程的,而C++是面向对象的!C和C++的区别C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。C++,首
在大多数开发或者准开发人员的认识中,C/C++ 是一门非常难的编程语言,很多人知道它的强大,但因为认为“难”造成的恐惧让很多人放弃。很多人因为大学的原因接触C语言,却也是为了学习其他编程语言而打下基础,至于C++更是不用说,很多人不会去刻意
先来看看本节知识的结构图吧!接下来我们就逐步来看一下所有的知识点:结构的演化C++中的类是从结构演变而来的, 所以我们可以称C++为”带类的C”.结构发生质的演变C++结构中可以定义函数, 称之为成员函数结构定义格式, 像这样:struct
记者 | 陈晓珍编辑 | 9月7日,猎聘发布的《短视频领域中高端人才招聘解析》(以下简称“报告”)显示,短视频领域新发职位的招聘年薪呈持续增长态势。2021年1-8月短视频新发职位平均招聘年薪为27.02万元,相比于2020年(21.05万
提到我国交通道路中出现的一种“特产”,那就不得不提到“老头乐”。而在与我们隔海相望的“东瀛”,却也推出了类似的产品,而更令人意外的是,这款产品居然来自丰田。这是怎么一回事呢?快和玩车弟一起去看看吧!丰田C+pod,三门双座微型纯电车没错,玩
C 和 C++ 的没落,不仅是因为 CPU 时钟周期的关系,而且因为关系到了开发者的时间全球大约有400万C和C++程序员,很可能是最大的社区了,约占20%的市场份额,不亚于Java,甚至还要更多一些(C和C++一起)。它们也是当前主流语言
这篇内容是接上篇《借鉴B端思维做用户增长》而写的,之前那篇文章是针对用户生命周期沉默用户阶段来谈用户增长,这篇文章主要针对成长期/成熟期的用户,谈如何用C+B的运营思维搭建积分体系,此外,引入广义积分概念看积分未来的发展趋势。源起首先,要从
C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应
如果提到一种语言,可能说这辈子都不敢说精通,有相当数量的人辉选择c++,看看大家如何评述c++,用了两年的c++,转学别的语言发现从未有过的轻松感。c++这门语言比较特殊,是大家公认的人类不能精通的一门语言,如果精通了基本确定这人是非人类了