进程、线程整理

1、  进程和线程的差别。

进程process是具有一定独立功能的程序关于数据集合上的一次运行,是系统进行资源分配的基本单位;线程是指进程内的一个执行单元,也是进程内的可调度实体。

同一进程所产生的线程共享同一内存空间,其本身基本上不拥有系统资源,只拥有运行中必不可少的信息(程序计数器,寄存器和栈)。

线程与进程的区别

(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位

(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行

(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.(资源共享)

(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。

 

2、  使用多进程与多线程,请问有什么区别

(1)   进程:子进程是父进程的复制品,子进程获得父进程的所有东西(父进程的数据空间,堆和栈)。每个进程都有自己的地址空间。线程则共享地址空间。

(2)   线程:相对与进程而言,线程是一个更接近执行体的概念,它可以与同进程的其他线程共享资源,但拥有自己的栈空间,独立的执行序列。

多进程和多线程都可以提高程序的并发性,提高程序的响应时间和运行效率

1、速度:线程速度快,线程之间的通讯快,切换快,因为他们拥有同一个地址空间

2、资源利用率:线程资源利用率比较好还是因为在同一个地址空间

3、同步问题:线程使用公共变量/内存需要进行同步还是因为在同一个地址空间

 

3、进程和线程在使用上各有优缺点:

线程执行开销小,但不利用资源管理和保护;

进程正好相反。

多进程和多线程哪个好,要针对具体的应用场景进行考虑。

4linux下进程间通信的几种主要手段简介:

  1. 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;
  2. 信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本 身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于 BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数);
  3. 报文(Message)队列(消息队列):消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字 节流以及缓冲区大小受限等缺点。
  4. 共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。
  5. 信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。
  6. 套接口(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。

或许你会有疑问,那多线程间要通信,应该怎么做?前面已经说了,多数的多线程都是在同一个进程下的,它们共享该进程的全局变量,我们可以通过全局变量来实现线程间通信。如果是不同的进程下的2个线程间通信,直接参考进程间通信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值