0x00 并行和并发

并行:同时做某些事,可以互不干扰的同一时刻做几件事。

并发:也是同时做某些事,但是强调,同一时刻做了几件事。

0x01 并发的解决:

1)队列、缓冲区:

排队就是队列,先进先出。排队是一种解决并发的方法。
排成的队列,其实就是一个缓冲地带,就是缓冲区。

2)优先队列:

在到达队列时优先处理,就是优先队列。

3)争抢:

资源被一个线程占据后,就会锁定资源,其它线程就需要等该线程释放资源再进程争抢。这是一种锁机制。

4)预处理:

提前加载线程需要的数据,缓存场景常用。

5)垂直扩展:

比如一台服务器无法快速处理高并发业务时,可以提升该服务器的内存、增加CPU性能和CPU数,这就是垂直扩展。

6)水平扩展:

也可以叫横向扩展,当一台服务器无法满足业务时,就增加服务器数量、带宽,这就是水平扩展。

7)消息中间件:

使用消息队列,比如RabbitMQ、ActiveMQ、RocketMQ、kafka等。这会涉及到生产者与消费者模型,后一篇文章会详细介绍。

0x02 进程和线程

线程,是操作系统能够进行调度的最小单位,每个进程至少有一个线程,同一个进程内的线程可以共享进程的资源,每一个线程拥有自己独立的堆栈。

进程,是系统进行资源分配和调度的基本单位,是一个或多个线程的集合,在操作系统中,每个进程在内存中相对独立的,进程间不可以随便的共享数据。

0x03 线程的状态:

就绪Ready:
  线程能够运行,但在等待被调度。可能线程刚刚创建启动,或刚刚从阻塞中恢复,或者被其它线程抢占.
运行Running:
  线程正在运行
阻塞Blocked:
  线程等待外部事件发生而无法运行,如I/O操作.
终止Terminated
  线程完成,或退出,或被取消.

最新文章

  1. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q147-Q151)
  2. # 关于Apache的25个初中级面试题
  3. USACO1.2Milking Cows
  4. android读取data下得数据
  5. Spark系列(五)Master主备切换机制
  6. (转)MSMQ(消息队列)
  7. ORA-16018: cannot use LOG_ARCHIVE_DEST with LOG_ARCHIVE_DEST_n or DB_RECOVERY_FILE_DEST【error收集】
  8. iphone开发之适配iphone5
  9. Song of Pi
  10. 【POJ 3279 Fliptile】开关问题,模拟
  11. hdu 1242 Rescue_bfs+优先队列
  12. 批处理命令行CMD启动停止重启IIS的命令
  13. 英特尔:不再公布PC处理器多核睿频数据
  14. 关于celery django django-celery版的搭配的报错问题及解决方法
  15. Swift基础之:新的访问控制fileprivate和open
  16. jQuery鼠标移入移出(冒泡版和无冒泡版)
  17. robotframework中的用evaluate关键字进行运算(随机数+转换+运算)
  18. Educational Codeforces Round 53 (Rated for Div. 2) A Diverse Substring
  19. Jquery 获取radio选中值
  20. Win10子系统Ubuntu安装llvm+clang

热门文章

  1. HTML中字体的垂直排列
  2. MySQL之单表查询练习
  3. Jquery获取radio选中的值
  4. SQLServer数据库系统概念
  5. meta name id class 标签的区别
  6. 如何用Fireworks制作经典的扫光字GIF动画
  7. SQL-OVER与四种排名函数:ROW_NUMBER(),RANK(),DENSE_RANK(),NTILE()
  8. ArcGIS10.x Engine直连提示连接超时ORA-12170 来自:http://www.iarcgis.com/?p=1004
  9. numpy数组属性查看及断言
  10. Angular1.x 之Providers (Value, Factory, Service and Constant )