いいえ文字通り意味するのは非同期です。プログラマとして成功するためには、非同期プログラミングとスレッドベースプログラミングの違いを理解することが重要です。
従来のスレッド化されていない環境では、関数が外部イベント(ネットワークイベント、キーボードイベントまたはマウスイベント、さらにはクロックイベントなど)を待機する必要があるときは、プログラムはになるまでを待つ必要がありますイベントが発生します。
マルチスレッド環境では、プログラミングの多くのスレッドが同時に実行されています。 (CPUの数とオペレーティングシステムのサポートによって、これは文字通り真実かもしれないし、洗練されたスケジューリングアルゴリズムによって作られた錯覚かもしれない)。この理由から、マルチスレッド環境は困難であり、お互いのメモリをロックしてお互いのオーバーランを防止するという問題があります。
非同期環境では、単一のプロセススレッドが常に実行されますが、イベントドリブンの理由で(そしてそれがキーです)、ある機能から別の機能に切り替えることがあります。イベントが発生すると、と、現在実行中のプロセスが別のイベントを待つ必要があるポイントに達すると、javascriptコアがイベントのリストをスキャンし、次のイベントを(正式には)不定)オーダーをイベントマネージャーに送信します。
このような理由から、イベント駆動の非同期プログラミングは、メモリ競合問題などの従来のマルチスレッドプログラミングの落とし穴の多くを回避します。イベントが処理される順序はあなた次第ではありませんが、まれに管理しやすいため、競合状態が残っている可能性があります。一方、イベントハンドラは、現在実行中の関数がアイドルスポットに達するまでイベントを配信しないため、一部の関数は残りのプログラミングを飢えさせる可能性があります。これはNode.jsで起こります。たとえば、人々がサーバーで愚かに大量の数学を行うと、ノードが答えを出すのを「待機」する小さなサーバーに最適です。 Node.jsはイベント用の小さなスイッチボードですが、100ミリ秒以上かかるものはクライアント/サーバーの方法で処理する必要があります。
ブラウザの環境では、DOMイベントは自動イベントポイントとして扱われます(DOMを変更すると、多くのイベントを配信する必要があります)が、ひどく書かれたJavascriptでもコアが枯渇することがありますこれらの "このスクリプトは応答を停止しました"という割り込みハンドラを持っています。
いいえ、非同期性(ism?)は並列処理を必要としません。 –
にはスレッドがありますが、プログラマー/言語のコンシューマーとしてはそうではありません。 – Jason
@ Jasonカバーの下に糸がありません。少なくとも、そこにいる必要はありません。 – Raynos