# 跨线程消息
开启新的线程伴随而来的问题就是通讯问题。webworker 的 postMessage 可以帮助我们完成通信,但是这种通信机制是将数据从一部分内存空间复制到主线程的内存下。这个赋值过程就会造成性能的消耗。而共享内存,顾名思义,可以让我们在不同的线程间,共享一块内存,这些现成都可以对内存进行操作,也可以读取这块内存。省去了赋值数据的过程,不言而喻,整个性能会有较大幅度的提升。
# postMessage
创建完毕之后,我们主要依靠 postMessage 与 onmessage 回调来在 Worker 线程与 UI 线程之间进行消息传递:
```js
// worker.js
// 向主线程发送消息
postMessage('event from worker');
// 接收来自主线程的消息
onmessage = function(event) {};
// UI
worker.onmessage = function(event) {};
worker.postMessage('event from ui');
// 关闭当前 worker
worker.terminate()