该专栏记录了在学习一个开发项目的过程中遇到的疑惑和问题。
其教学视频见:[C++高级教程]从零开始开发服务器框架(sylar)
上一篇:C++服务器框架开发2——头文件memory/typedef
C++服务器框架开发3——协程与线程的简单理解/并发与并行
- 目前进度
- 协程与线程的简单理解
- 并发与并行
目前进度
目前刚看完第一个视频,该博主写完了log.h的大致内容,进度如下图。
要点:
- 将上次定义的枚举类的level单独定义为类(25-35)。
- 新定义了两个类StdoutLogAppender和FileLogAppender。
- 补充了一些注释。
由于内容太长,一张图截取不完,附上一张小图。
协程与线程的简单理解
这次的学习中没什么难点,所以就先简单了解下协程和线程。参考自:线程和协程的区别的通俗说明。
概括:
线程是操作系统的资源,比较昂贵。java、C++等程序在创建线程时,需要向操作系统发出请求,这是比较麻烦的。而协程的创建则是在编程语言自身上就能完成,不需要向操作系统申请。
协程更轻量。线程与程序主线程是同一级别的东西,协程则是跑在程序主线程上的。
线程可以在多核环境下实现并行,而协程则是为了实现并发而产生的。
并发与并行
注:下面的图片也是来自该文章
图片很直观了,并行是多个任务并行发生(并行,加速),并发是多个任务交替处理(交替可能是为了充分利用单任务中某些等待时间)。
文章举的协程的业务场景例子是两个sql查询。如果开两个线程可能不划算,因为线程大部分时间都在等待服务器响应,这太浪费资源。所以用协程就更符合实际需求。个人觉得,这和微机原理讲的多级流水线操作很像。