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

admin 发布于:2015-11-12 15:59 栏目: 浏览:520 评论: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处理.
但是不要忘了, 目前, 你只有浏览器环境下的CanvasSvg可选.
想把nodejs当成DirectX OpenGLOS层面上渲染, 没有API供你使用.
而对于浏览器环境, HTML5本身就拥有Worker用来处理WebGL.
游客

返回顶部