理解了Linux I/O机制,才能真的明白“什么是多线程”( 二 )


理解了Linux I/O机制,才能真的明白“什么是多线程”

文章插图
 
再谈多线程所谓多线程,就是多个线程在一个进程里同时运行,它们之间可以是协作的关系,一起完成某个共同的任务,也可以各干各的事 。不管协作,还是单干,总有一个问题绕不开:“CPU 的资源怎么分配?”多线程之间争夺资源的过程可以认为是一种“零和博弈”,线程 A 抢夺的资源多,那么线程 B 得到的资源必然就少了嘛!一般来说,用户只会关心 CPU 总的利用率,这个值越大越好,而不用关注具体每个线程得到的计算资源是多是少 。
多线程在同一个进程里跑,必然会带来一些问题,比如“多个线程要同时访问同一个变量,怎么办呢?”(各种锁)、“怎么控制线程的加入和退出呢?”(信号量)、“线程之间的 CPU 时间片怎么分配呢?”(资源调度模式)、“怎么创建一个线程呀?”(线程模板和线程池)等等 。详细内容涉及的面就比较广了,JAVA、C++、C等不同的编程语言实现的方式也不尽相同,下次有时间再聊吧!




推荐阅读