进程和线程

进程:具有一定功能的程序在某个数据集上的运行活动,是系统进行资源分配和调度的基本单位;

线程:线程是进程的实体,是CPU进行调度和分配的基本单位,一个进程下可以有多个线程并发执行,这些线程共享进程的资源;

区别:线程和进程的操作系统管理方式不同,进程具有独立的地址空间,一个进程崩溃后不会影响到其他进程;而线程没有独立的地址空间,一个线程死掉整个进程崩溃。在实际中,多线程会比多进程的程序更健壮,但是进程之间的切换需要耗费很多资源,效率会低一些。

问题:两个线程调用同一个函数是,需要进行互斥处理吗?
(1)同一个进程下的两个线程调用同一个函数,两个线程的函数变量是保存在不同的栈中,因此不需要进行互斥处理;
(2)两个进程中的线程调用同一个函数,也是同理。

进程间的通信方式:
(1)管道:管道是一种具有两个端点的通信通道,它是一种特殊的文件,不属于文件系统,有自己的数据结构,根据管道的使用范围划分为有名管道和无名管道:

  • 无名管道:用于父进程和子进程之间,通常父进程创建管道,子进程继承父进程的读端点句柄和写端点句柄,这些子进程之间可以使用管道直接通信,不需要通过父进程;
  • 命名管道:解决无名管道只能用于父进程和子进程的问题

(2)信号:除系统内核和root之外,只有具备相同id的进程才可以通过信号通信;
(3)消息队列:消息的链表,有权限的进程可以向消息队列添加消息或是读取消息,从而进行通信;
(4)共享内存:多个进程可以访问同一块内存,是最快捷的通信方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值