zoukankan      html  css  js  c++  java
  • 进程,线程,协程总结

    比较项进程线程协程
    占用资源 随程序运行所需内存而变化 初始单位为1MB,固定不可变 初始一般为 2KB,可随需要而增大
    调度所属 资源分配由OS完成 由 OS 的内核完成 由用户完成
    切换开销 进程切换开销很大 涉及模式切换(从用户态切换到内核态)、16个寄存器、PC、SP...等寄存器的刷新等 只有三个寄存器的值修改 - PC / SP / DX.
    性能问题 进程独立运行 稳健

    资源占用太高,频繁创建销毁会带来严重的性能问题,
    线程之间上下文切换带来性能问题

    资源占用小,不会带来严重的性能问题,
    在线程内部切换
    数据同步 可通过进程间通信进行数据交换 需要用锁等机制确保数据的一直性和可见性 不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。

    进程:是系统调度和分配资源的最小单位,拥有自己独立的堆和栈,进程由操作系统调度进程。进程维护的是程序所包含的资源(静态资源), 如:地址空间,打开的文件句柄集,文件系统状态,信号处理handler等;
    线程:是CPU调度和分配任务的最小单位,拥有自己独立的栈,与同一个进程下的其他线程共享所属进程的堆,标准线程由操作系统调度。线程维护的运行相关的资源(动态资源),如:运行栈,调度相关的控制信息,待处理的信号集等;
    协程:拥有自己独立的栈,与同一个进程下的其他线程共享所属进程的堆,协程由程序员在协程的代码里显式调度;

  • 相关阅读:
    新浪开放平台入门及基本步骤(java SDK)
    Android 解析JSON数据示例代码[CODE]
    Ubuntu10.04 搭建android平台
    程序员真的很懒
    android之ContentResolver与ContentProvider
    写代码如写散文
    通过OAuth认证和操作新浪微博
    喜报:凌阳教育深圳中心正式成立
    25个让Java程序员更高效的Eclipse插件
    Java Json开源解析包 googlegson download(下载)
  • 原文地址:https://www.cnblogs.com/kevin-yang123/p/14179642.html
Copyright © 2011-2022 走看看