I/O技術(ブロックI/O、非ブロックI/O)
2381 ワード
1.学習目標
2.プログラミング(共通)
2.動機
同期
3. blocking
3-1. blocking
この現象を閉塞と呼ぶ.
そしてこのプロセスが終わる前に、プレイヤーの立場から見ると、プログラム全体が停止しているようです.
3-2. ブロック例(単一スレッド)
simple-sync.html
const btn = document.querySelector('button');
btn.addEventListener('click', () => {
let myDate;
for(let i = 0; i < 10000000; i++) {
let date = new Date();
myDate = date
}
console.log(myDate);
let pElem = document.createElement('p');
pElem.textContent = 'This is a newly-added paragraph.';
document.body.appendChild(pElem);
});
入力
ボタン
完了したら、ページに簡単な文を印刷します.
しゅつりょく
この例を実行すると、JavaScriptコンソールを開き、ボタンをクリックすると、コンソールからメッセージが出力されるまでページに文は表示されません.コードは上から下へ順に実行され、上のコードが処理されるまで、下のコードが実行されます.
最初のボタンをクリックし、すぐに2番目のボタンをクリックして、警告ボックスが表示されないことを確認します.最初のボタンは、イベントが終了する前に次の操作をブロックします.
の原因となる
3-3. Threads
3-3-1. 単一プロセス
デフォルトでは、
Task A --> Task B --> Task C
3-3-2. マルチCPUコアとマルチプロセス:
前述したように、多くのコンピュータは現在、複数のCPUコアを有しているため、一度に複数のタスクを実行することができる.
マルチスレッドをサポートするプログラミング言語では、マルチコアコンピュータ上のCPUを使用して複数のタスクを同時に処理できます.
効果:複数のタスクを同時に処理する
結果:
Thread 1: Task A --> Task B
Thread 2: Task C --> Task D
3-3-3. JavaScript is single threaded
JavaScriptは伝統的に単一スレッドです.コンピュータにCPUが複数ある場合でも、mainthreadというスレッドでのみタスクを実行できます.上記の例は次のとおりです.
3.非同期
[ココ面接]ブロックI/O、同期非ブロックI/O、サブ同期非ブロックI/O
Reference
この問題について(I/O技術(ブロックI/O、非ブロックI/O)), 我々は、より多くの情報をここで見つけました https://velog.io/@coco_hye/입출력-기법-blocking-Io-Non-blocking-ioテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol