进程和线程区别以及各自的通信方式

进程和线程的区别是什么?

  线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作工作切换时,负担比进程小的多,也正是因此,线程也被称作是轻量级进程。另外,也正因为共享资源,所以线程中执行时一般都要进行同步和互斥。总的来说,进程和线程的主要差别在于它们是不同的操作系统资源管理方式。

进程间的几种通信方式说一下?

  1. 管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有血缘关系的进程间使用。进程的血缘关系通常指父子进程关系。管道分为pipe(无名管道)和fifo(命名管道)两种,有名管道也是半双工的通信方式,但是它允许无血缘关系进程通信。

  2. 信号量(semaphore):信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它通常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。

  3. 消息队列(message queue):消息队列是由消息组成的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少,管道只能承载无格式字节流以及缓冲区大小受限制等缺点。消息队列与管道通信相比,其优势是对每个消息指定特定的消息类型,接收时不需要按照队列次序,而是可以根据自定义条件接收特定类型的消息。

  4. 信号(signal):信号时一种比较复杂的通信方式,用于通知接收进程某一事件已发生。

  5. 共享内存(shared memory):

原文地址:https://www.cnblogs.com/yhc-love-cl/p/14312001.html