这门课程之所以叫这个名字,一方面是因为这是个全面讲PThread的课程,包含了完整且系统的PThread知识。另一方面,它是个基础课程,这意味着只要学完它,后面再去做多线程相关的工作时,就不会再糊里糊涂了。




《Casa的PThread多线程课程》线上地址




我平时写代码不怎么用到多线程,为什么还要学这个课程?


其实日常工作中使用多线程的场景还是很多的。

只不过是需要亲自写多线程完成的任务也都很简单,开个线程做事情就结束了。若是要完成更复杂一点的任务的话,那就找第三方库去完成了。


在这种情况下,一旦有什么bug,因为你对多线程不那么熟悉,就不会第一个考虑有可能是多线程导致的bug。但事实上90%的疑难bug,都是多线程导致的。


另外就是,现在面试的时候,多线程基本上是面试官的必问题,而且往往也会是整场面试里最难的那部分。

这种题如果能答上来,会加分很多。

学完这门课程之后,你至少是达到熟悉多线程的水平了,应对面试绰绰有余。




我用的是Java / Golang / Swift / Python... 即使是写多线程,也基本上不会用PThread去写,我学PThread有什么用?


确实市面上有各种多线程的库,各种语言对多线程也有各自的封装。

但是,市面上所有的库所有的封装,归根结底,他们全部都是基于PThread的,无一例外。


如果你学会了PThread,那么不管是什么库什么语言,基本上拿来就用。

如果你不熟悉某个库,但你熟悉PThread,那么你就会知道PThread有的功能它一定有,你搜索的时候也就有了清晰的方向。




网上多线程文章那么多,我随便找一下一大把。我自己多花点时间去学习就好了。


是的,完全靠自学的话搞定多线程PThread也是没问题的,只是会多花点时间。

因为多线程的复杂度在这里,要找到一个比较好的资料其实不那么容易的。


这门课程对PThread多线程的讲解比较全面,在准备的过程中我也花了不少时间对资料去做收集和甄别。

包括但不限于:线程和线程的各种属性、线程的退出/取消/结束、线程数据的获取(pthread_join)、锁和各种锁,各种属性、TSD(Thread-Specific-Data)、条件变量(Condition Variable)、信号量(Semaphore)、栅栏(pthread_barrier)、优先级反转(Priority Ceiling/Priority Inheritance)、异常结束处理机制(Robust)等等。


所以对你而言,就省去了很多收集资料的时间和甄别资料的精力。




工作中也会用些多线程的技术,虽然再深一点的知识就可能不是很了解,但是以目前的知识来看,我搞定日常工作没什么问题的。


在多线程体系下面,解决一个问题其实有很多种方案的。

就比如semaphore和barrier即使没有,也是可以用锁或者条件变量去完成的。

但是如果知道semaphore怎么用,barrier怎么用,是可以做出更优雅的方案的。


另外,多线程体系下面也是有很多坑的。

更坑的点在于,由于多线程环境是不稳定的,所以出问题绝大多数都是偶发的。


如果了解更深的内容,一方面解决问题的时候就能够绕过这些坑,另一方面解决偶发问题的时候就会更有思路。




这门PThread课程要学多久?我可能没有那么多时间。


PThread的难点其实不在于技术本身难,而是在于多线程的环境复杂,有很多奇妙的问题如果不知道来龙去脉,就很难理解。

所以我会用最简单的方式去把复杂问题讲出来,是十分易于理解的。


这个课程一共20节,每节短的1分多钟,长的十几分钟,总共两个小时。

基本上就是你先找个地方坐下来,2小时之后再站起来,你就已经一技傍身了。


Comments

comments powered by Disqus