zoukankan      html  css  js  c++  java
  • 常见的多线程编程模型

    1.基本概念:sleep,join,yied,优先级.

    2.进程,线程:独立的内存空间,内存地址,不会相互影响。(进程就是硬件的一种模拟,不过进程存在内存中,占据内存空间,也就是一种就绪中的硬件设备,软件上说就是一种数据结构)

    3.数据结构:(共享资源的软件模拟)-队列。[资源总是优先的,所以必须共享,机制就是锁机制]

    4.并发控制(协作):信号量机制(硬件机制原理),软件实现(锁机制-比如读写分离,基于二维的锁兼容性)[类似于中断机制,各个外设通过中断指令共享CPU,CPU通过中断调度外设,外设获得CPU资源]

    5.障碍器,信号量,锁

    6.CPU密集型--计算,I/O密集型--传输(网络或者文件)--TCP或者串口等--阻塞和非阻塞(读取-写入-更新--这就是一个原子操作或者微命令)。

    7.通信机制冗余机制,中断机制(类似事件机制,与之相对的便是轮询机制,不过本质都是轮询机制)

    编程模型:

    1.while(true) {new Thread()}-单一主线程和多任务任务线程----请求都在队列(共享)

    2.while(true) {ThreadPool}-单一主线程和线程池任务----------请求都在队列(共享)

    如下图所示:上述都是单进程多线程模型借助队列共享资源

    3.IO的多路复用:比如电视信号就是一种复用,信道的频率不一致

    同步非阻塞:处理后的结果用户自己要处理

    异步非阻塞:处理后的结果自动通知用户

    共同点:分发器,处理器

  • 相关阅读:
    解决virtualbox与mac文件拖拽问题
    SNMP收集
    scapy的安装
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    subprocess.call(cmd, shell=True)
    能够把意见说的让人接受是个技能
    (转)Jenkins2.0 Pipeline 插件执行持续集成发布流程
    ansible 与 Jinja2的结合 -- 安装zabbix
    运维自动化平台-背后的设计计划和架构
    命令行获取zabbix最新的issues
  • 原文地址:https://www.cnblogs.com/gstsyyb/p/3775691.html
Copyright © 2011-2022 走看看