zoukankan      html  css  js  c++  java
  • 进程和线程以及它们的区别

    进程?线程?

    进程是对运行程序的封装,是系统进行资源调度和分配的基本单位,实现了操作系统的并发。

    其实现的过程:用户运行xx程序,系统就创建一个进程同时为其分配(内存空间,磁盘空间,I/O设备)资源,将该进程放到就绪队列中等待,被进程调度器选中。这就运行起来了。

    线程是进程的子任务,是cpu调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发。

    注意:在没有实现线程的时候,进程即是资源分配的基本单位,也是调度的基本单位,是系统中并发执行的单元

          实现线程的时候,进程是资源分配的基本单位,线程是调度的基本单位和系统中并发执行的单元。

    引入线程的优点:

    1)易于调度

    2)提高并发性。通过线程可以方便有效实现并发

    3)开销小,创建线程比创建进程要快,所需的开销也少

    4)有利于发挥多处理器的功能。通过创建多线程,每个线程都在一个处理器上运行,从而实现应用程序的并行,充分利用每个处理器。

    进程与线程的区别:

    1)一个程序至少有一个进程,一个进程至少有一个线程,线程依赖进程而存在。

    2)进程在执行时拥有独立的内存单元,而线程则是多个线程共享内存空间。

    3)线程又称为轻量级的进程。进程有进程控制块,线程又线程控制控制块。线程控制块小,线程间切换代价小。

    4)进程是一个程序的一次执行,线程可以理解为程序中一段程序片段的执行。

    进程间的通讯:

    1)管道与命名管道,这在linux中是“|”

    管道可用于亲缘关系的父子进程间通信,但有名的管道还可以允许无亲缘关系的进程间通信。

    2)信号

    信号是一种用于通知接受进程某个事件发生

    3)消息队列

    是消息的链接表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标识。

    4)信号量(semaphore)它是一个计数器。

    信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。

    5)共享内存(Shared Memory)

    指两个或多个进程共享一个给定的存储区。

  • 相关阅读:
    C Socket编程之Connect超时 (转)
    【c#】设置Socket连接、接收超时(转)
    socket测试远程地址能否连接并为连接设置超时(转)
    ZedGraph右键菜单怎样禁止它弹出(转)
    赚钱本身就是人生目的
    如果一个女人喜欢你,又不跟你在一起,而且只跟你很暧昧,那代表什么
    LayoutInflater的使用
    Android应用程序的生命周期
    Android的系统服务一览
    Android系统服务-简介
  • 原文地址:https://www.cnblogs.com/topass123/p/12750668.html
Copyright © 2011-2022 走看看