12

多进程和多线程的应用场景

多进程模型的优势是CPU,适用于CPU密集型。同时,多进程模型也适用于多机分布式场景中,易于多机扩展。

多线程模型主要优势为线程间切换代价较小,因此适用于I/O密集型的工作场景,因此I/O密集型的工作场景经常会由于I/O阻塞导致频繁的切换线程。同时,多线程模型也适用于单机多核分布式场景。

io 操作不占用CPU(从硬盘、从网络、从内存读数据都算io)
计算占用CPU(如1+1计算) Continue reading

08

nodejs多线程模块的安装过程记录

要安装 nodejs模块 threads_a_gogo,处理多线程,直接安装,报错。是因为这个模块要求nodejs版本是>=0.5.1 <=6.9.2,可以我的nodejs是最新版本12.x的,也不能因为它把nodejs版本降到6.9.2呀。再一看它的更新时间,还是2017年呢,看来是没人维护了。

在github又找到一个模块node-webworker-threads,2019年2月15日最后更新,也不是很勤快,但是还算可以,安装npm install webworker-threads,报错:“…. 在此解决方案中一次生成一个项目。若要启用并行生成,请添加“/m”开关。….”。 Continue reading

08

并发、并行、同步、异步、多线程之间的关系和区别

并发:同一时间段有几个程序都处于已经启动到运行完毕之间,并且这几个程序都在同一个处理机上运行,并发的两种关系是同步和互斥;

互斥:进程之间访问临界资源时相互排斥的现象;

同步:进程之间存在依赖关系,一个进程结束的输出作为另一个进程的输入。具有同步关系的一组并发进程之间发送的信息称为消息或者事件;

并行:单处理器中进程被交替执行,表现出一种并发的外部特征;在多处理器中,进程可以交替执行,还能重叠执行,实现并行处理,并行就是同事发生的多个并发事件,具有并发的含义,但并发不一定是并行,也就是说事件之间不一定要同一时刻发生;

多线程:多线程是进程中并发运行的一段代码,能够实现线程之间的切换执行;

异步:和同步相对,同步是顺序执行,而异步是彼此独立,在等待某个事件的过程中继续做自己的事,不要等待这一事件完成后再工作。线程是实现异步的一个方式,异步是让调用方法的主线程不需要同步等待另一个线程的完成,从而让主线程干其他事情。

异步和多线程:不是同等关系,异步是目的,多线程只是实现异步的一个手段,实现异步可以采用多线程技术或者交给其他进程来处理。