zoukankan      html  css  js  c++  java
  • 进程&线程 同步异步&阻塞非阻塞

    2015-08-19 15:23:38 周三

    线程 线程安全

    如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码

    线程安全问题都是由全局变量及静态变量引起的

    若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全

    线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用

    线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据

    一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并行多个线程,每条线程并行执行不同的任务

    线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文

    join();可以用来邀请其他线程先执行

    yield();告诉系统"把自己的CPU时间让掉,让其他线程或者自己运行"

    同步异步&阻塞非阻塞

    1. 同步,就是我调用一个功能,该功能没有结束前,我死等结果。
    2. 异步,就是我调用一个功能,不需要知道该功能结果,该功能有结果后通知我(回调通知)
    3. 阻塞,      就是调用我(函数),我(函数)没有接收完数据或者没有得到结果之前,我不会返回。
    4. 非阻塞,  就是调用我(函数),我(函数)立即返回,通过select通知调用者

     

    同步IO和异步IO的区别就在于:数据拷贝的时候进程是否阻塞!

    阻塞IO和非阻塞IO的区别就在于:应用程序的调用是否立即返回!

    多路复用:

    所谓I/O多路复用机制,就是说通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作

  • 相关阅读:
    RSA签名算法概述及使用
    PyQt5【入门-窗口】
    CSS的一些文本操作有哪些
    Canvas如何绘制精美的图?
    Python学习路线
    表单都应该提交点什么
    网页的图像、表格以及列表的使用和制作
    网页的头部都装点什么
    HTML5,从零开始
    Redis的安装以及spring整合Redis时出现Could not get a resource from the pool
  • 原文地址:https://www.cnblogs.com/iLoveMyD/p/4742398.html
Copyright © 2011-2022 走看看