同期通信・非同期通信とは
同期通信と非同期通信は、コンピュータサイエンスやネットワーキングの文脈で使われる用語で、それぞれ異なる動作や処理の方式を指します。
同期通信(Synchronous Communication)
- 同期通信では、処理が順番に実行され、次の処理は前の処理が完了するのを待ちます。つまり、一つの処理が終了するまで次の処理が開始されません。
- シンプルで直感的なプログラミングが可能ですが、処理が完了するまで他のタスクを実行できないため、効率が悪い場合があります。
- 典型的な例は、関数の呼び出しやファイルの読み込みなどです。
非同期通信(Asynchronous Communication)
- 非同期通信では、処理の完了を待たずに次の処理が開始されます。つまり、複数のタスクが同時に実行され、結果が返ってくるまで待つ必要がありません。
- ファイルの読み込みやネットワークリクエストなど、長時間かかるタスクを効率的に処理するために使用されます。
- 典型的な例は、コールバック関数やプロミス、非同期関数(async/await)などです。
以下は、同期通信と非同期通信の例です。
同期通信の例(JavaScript)
console.log("Start");
function syncFunction() {
console.log("Sync function");
}
syncFunction();
console.log("End");
//Sync function
//End
非同期通信の例(JavaScript)
console.log("Start");
setTimeout(function() {
console.log("Async function");
}, 2000);
console.log("End");
//End
//Sync function
非同期通信の場合、setTimeout
関数は2秒後に実行されますが、console.log("End")
はそれを待たずにすぐに実行されます。