线程有什么用处? 为什么有些东西注定不会流行

2015-11-12 admin 评论:0

多线程的领域也许只有一个: 图形学.

我们以一个游戏来说明

@ |___|___|___|___|___ @是一个玩家, 往前走, 每一个___是1米. 每当@走到1米的时候, 会绘制一个蘑菇*给玩家看.

@|___*___|___|___|___ @ |___*___*___|___|___ 非常简单的游戏. 问题在这 1个游戏开启1个进程, 启动1个线程来完成游戏任务. 当**@走完1米的时候, 线程这时候要求进度停下, 开始绘制蘑菇***. 绘制的速度取决于CPU的速度. 所以, 在这里, 根据玩家机器配置, 会出现不同程度的卡顿. 多线程策略: 1个游戏开启1个进程, 启动n个线程来完成游戏任务.

@ |*||___ CPU有时候运行速度是很快的, 所以当玩家在出发第一个1米走的时候, CPU已经快速的绘制完了玩家当时的场景, 并且空闲下来. 这时候可以利用这个空闲, 用第2个线程去绘制远方的蘑菇** 这样当玩家走完1米的时候, 蘑菇*早就绘制完了, 或者快绘制玩了. 对于1核CPU-1进程-多线程的游戏, CPU在每一个任务点出现空闲, 然后切换到下一个任务点运行, 再依次切换回第一个任务点继续. 对于玩家来讲移动一个格是0.几秒的事情, 对于CPU来讲, 已经完成了成千上万的任务.

为什么有些东西不会流行?

我已经解释了线程. 再来看看nodejs. nodejs就是一个口, 进来出去

[client] – [nodejs] – [OS | DATABASE | …] 你甚至可以把ta看成是个网关, 是个路由器, … 消息进来, 看一看, 放进去. 消息出去, 看一看, 放出去. 你认为线程对于其来讲, 意义何在? 唯一的意义? 只有你想把nodejs用来做图形渲染这样的高CPU处理. 但是不要忘了, 目前, 你只有浏览器环境下的Canvas和Svg可选. 想把nodejs当成DirectX OpenGL在OS层面上渲染, 没有API供你使用. 而对于浏览器环境, HTML5本身就拥有Worker用来处理WebGL.

评论
回到顶部