<!-- 2017/5/26 -->
一、异步阻塞
同步异步关注的是: 消息通信机制
阻塞非阻塞关注的是: 程序在等待调用结果时的状态
烧水例子:
- 同步阻塞: 我用普通水壶烧水,坐等水开
- 异步阻塞: 我用响水壶烧水,坐等水开,但水开时水壶有提醒
- 同步非阻塞: 我用普通水壶烧水,然后去干其他事,时不时看看水有没有开
- 异步非阻塞: 我用响水壶烧水,然后去干其他事,水开时水壶有提醒
二、进程线程
1、进程: cpu资源分配的最小单位,计算机中已运行程序的实体,是线程的容器,单个CPU一次只能运行一个进程
2、线程: cpu独立调度的最小单位
3、工厂例子
- 工厂是CPU,承担所有计算任务
- 进程是车间,代表cpu所能处理的单个任务,单个CPU一次只能运行一个进程
- 线程是车间工人,一个进程包括多个线程,多个线程协同完成一个任务
- 有些进程的内存空间是共享的,每个线程都能使用共享内存
- 互斥锁,防止多个线程同时读写某一内存区域
- 信号量,保证多个线程不会互相冲突
4、软件例子: 开了QQ,开了一个进程。QQ里传输文字开了个线程,弹出对话框开了个线程。
三、编译器
1、编译器概念: 是一种计算机程序,将某种编程语言写成的源代码(原始语言),转换成另一种编程语言(目标语言)
2、工作流程
源代码 -> 预处理器 -> 编译器 -> 汇编程序 -> 目标代码 -> 链接器 -> 可执行文件
source code->preprocessor->compiler->assembler->object code->linker->executables3、32位CPU和64位CPU
指令集合,操作数位数,寄存器名称,寄存器个数都不同
但intel的x86-64cpu和amd的amd64能兼容32软件环境4、并发,并行,分布式计算
- 并发计算: 将一个计算任务,分区成几个小部分,让它们同时被计算,之后再汇整计算结果,以完成任务。是一种程序计算的形式。计算单元间的通信:(1)共享内存通信:java,c#; (2)消息传递通信:
- 并行计算: 并发计算的程序在机器平台上同时被运行的状况,因此是机器运算的形式
- 分布式计算: 是并行计算的特例,采用计算机网络来进行同步。把工程数据分区成小块,由多台计算机分别计算,将结果统一合并得出数据结论。大型多人在线游戏,对等网络,面向服务的体系架构。