一起实现一个协程库!

文摘   科技   2024-11-13 11:31   广东  

这次再带大家做一个 CPP的项目,实现 协程库,代码不多,算是小而美的轮子项目。

项目代码地址:https://github.com/youngyangyang04/coroutine-lib

为什么要做协程库?

1、不“烂大街”,主打一个差异化

其实webserver有一个好处,就是 相对容易上手,且可以继承很多东西,也就是扩展性很好。

webserver可以串联很大部分的基础知识,包括 C/C++,计算机⽹络,操作系统基础知识。

还有Linux环境下的网络编程、系统编程,数据库等知识,且有很大的扩展空间,可以扩展更多功能模块,cpp选手用webserver作为巩固基础知识的入门项目是非常合适的

但是这个项目确实过于“烂大街”,如果不能做出新意,只是简单的照搬,或是简单做个功能扩展,拿webserver作为简历的主打项目竞争力有限的。

2、协程确实有用

面试中,面试官经常会问这样的问题,“你知道线程和进程区别吗?”然后会紧接着追问“你了解协程吗?

协程和进程、线程又有什么区别?

”我们通过基础知识的学习和如WebServer此类项目,已经对进程和线程有了比较深的理解,但对协程相关知识却知之甚少。

协程作为一种强大的并发编程技术,可以在需要处理大量I/O操作或者并发任务的情况下提高程序的性能和可维护性。

在许多场景应用广泛,如果我们能做一个协程库的项目,不但可以让简历更加出彩,对以后的工作也大有帮助。

3、协程库只是一个轮子,可以方便的应用在其他项目中,增加其他项目的“新意”

自己手动完成一个协程库,还可以直接将我们自己编写的协程库用在其他项目里。

就比如“烂大街”的WebServer,引入协程技术,不但可以提高并发和资源利用率,还大大简化了异步编程的复杂性,使代码更易于理解和维护,这样这个“烂大街”的项目也就有了新意。

4、增加知识的深度和广度,提高面试通过率

深入理解了协程技术后,即使面试官不主动问协程技术,就算问进程与线程,我们也可以主动提及协程,与线程和进程对比,引导面试官问协程相关的问题,主动展示自己知识的深度和广度,这会大大提高我们面试的通过率。

本项目文档

这次的项目文档依然非常齐全,从 前置知识 到 理论基础,从 动手实现 到 项目拓展 再到最后 简历如何写,面试会问的问题,都给大家安排了。

文档目录如下:

  • 前序
    • 为什么要做协程库?
    • 所需要的基础知识
    • 编程语言
    • 操作系统&Linux
    • 计算机网络
    • 参考书籍&开源项目&博客
  • 动手前先了解一下协程
    • 什么是协程?
    • 对称协程与非对称协程
    • 有栈协程与无栈协程
    • 独立栈与共享栈
    • 协程的优缺点
    • 协程基础知识
    • C++有哪些协程库?
  • 开始动手
    • 协程类的实现
    • 协程调度
    • 协程+IO
    • 定时器
    • hook
  • 写好了就完了吗
    • 项目扩展
    • 协程+
    • 性能测试
  • 如何应对面试
    • 简历怎么写?
    • 面试会问哪些问题呢?

大家看完这份文档,直接就可以按照文档里的简历写法,写到自己的简历里。

面试官最喜欢问的项目难点,项目收获,都给大家列好了:

面试常见问题也给大家列出来,如果自己没时间理解,直接“背诵”

如果你认真做完项目,本项目文档给你一个可以自己拓展的方向:

做完了项目,是不是也得性能测试一下:

项目文档其他部分截图:


这份项目文档 在元旦前 就制作完了,并分享到知识星球里:

文档下载方式:

本PDF文档仅为星球内部专享,大家可以加入知识星球里获取PDF。PDF在星球置顶一:(里面也有GO项目精讲 , 前端项目精讲

如果确实想白嫖文档,知识星球支持三天内全额退款,可以进去领完PDF再退款(大实话了),退款方式在知识星球APP右上角。(全程无套路)

扫码加入代码随想录知识星球,方向比努力更重要,一群人可以走的更远!


加入知识星球后,记得加如下微信,拉你到星球交流群:


代码随想录
认准代码随想录,学习算法不迷路。 刷题网站:programmercarl.com
 最新文章