Rumah hujung hadapan web tutorial js 详解Nodejs中的阻塞和非阻塞

详解Nodejs中的阻塞和非阻塞

May 18, 2021 am 10:23 AM
nodejs blok tidak menyekat

本篇文章带大家理解一下Nodejs中的阻塞和非阻塞。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

详解Nodejs中的阻塞和非阻塞

推荐学习:《nodejs 教程

对于阻塞和非阻塞这两个概念大家应该都有一些自己的理解:

再简单说一下,阻塞大部分是由于同步模式造成,非阻塞可以理解为异步模式处理一些耗时的操作

那么再Node.js中阻塞和非阻塞是怎么描述的呢?下面主要就这个问题去展开说明:

Node中什么是阻塞?

I/O操作可以理解为主要是指与系统磁盘的交互(数据读写)或者是网络请求等

阻塞就是其他JS代码的执行必须要等到前面的耗时的I/O操作或者一些网络请求等完成之后。因为Node存在事件循环来解决这个问题,那假如说js再执行的过程中,事件循环没有被开启,其实就会造成阻塞的情况发生。

其实在Node.js中正常情况下也是存在被阻塞的情况,原因是Node的异步处理针对于I/O操作比较友好【利用事件循环】,但是对于JavaScript可能存在的一些CPU密集型的操作性能就比较低。有的同学可能会说,为什么CPU密集型的操作Node.js不能够异步支持呢?因为可以理解这些CPU密集型操作,其实都是一些同步代码,比如大量的for循环,海量的数据计算等。

Node.js的标准库中也存在一些同步的方法,这些方法大部分都是基于libuv来实现阻塞的效果。Node的原生模块中也存在一些阻塞方法。不过同时Node也会提供对应的异步版本的API。

什么事libuv呢? 是一个支持多平台的针对于异步I/O操作的库。 详细可见官网:https://libuv.org/

Node中什么是非阻塞呢?

首先思考一下在不局限于Node的背景之下如何实现非阻塞(异步)呢?

简单说两个:

1)可以开多个线程去处理并发的操作

2)事件循环的模式,如果有异步操作放在事件队列中,异步操作结束之后,调用对应的回调函数处理异步返回结果

Node.js是单线程的,原因是:Node.js外层是由JavaScript实现的,JavaScript的解释执行是通过V8引擎来做的。

既然JS的执行是单线程的,那么我们不可能在JS解释执行期间再开放一个线程其解释执行吧,因此Node.js是采用第二种方式来实现非阻塞(异步操作)的。

注意不要混用Node中的阻塞和非阻塞API

英文原文地址:https://nodejs.org/en/docs/guides/blocking-vs-non-blocking/

更多编程相关知识,请访问:编程视频!!

Atas ialah kandungan terperinci 详解Nodejs中的阻塞和非阻塞. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Adakah nodejs rangka kerja bahagian belakang? Adakah nodejs rangka kerja bahagian belakang? Apr 21, 2024 am 05:09 AM

Node.js boleh digunakan sebagai rangka kerja bahagian belakang kerana ia menawarkan ciri seperti prestasi tinggi, kebolehskalaan, sokongan merentas platform, ekosistem yang kaya dan kemudahan pembangunan.

Bagaimana untuk menyambungkan nodejs ke pangkalan data mysql Bagaimana untuk menyambungkan nodejs ke pangkalan data mysql Apr 21, 2024 am 06:13 AM

Untuk menyambung ke pangkalan data MySQL, anda perlu mengikuti langkah berikut: Pasang pemacu mysql2. Gunakan mysql2.createConnection() untuk mencipta objek sambungan yang mengandungi alamat hos, port, nama pengguna, kata laluan dan nama pangkalan data. Gunakan connection.query() untuk melaksanakan pertanyaan. Akhir sekali gunakan connection.end() untuk menamatkan sambungan.

Apakah pembolehubah global dalam nodejs Apakah pembolehubah global dalam nodejs Apr 21, 2024 am 04:54 AM

Pembolehubah global berikut wujud dalam Node.js: Objek global: modul Teras global: proses, konsol, memerlukan pembolehubah persekitaran Runtime: __dirname, __filename, __line, __column Constants: undefined, null, NaN, Infinity, -Infinity

Apakah perbezaan antara fail npm dan npm.cmd dalam direktori pemasangan nodejs? Apakah perbezaan antara fail npm dan npm.cmd dalam direktori pemasangan nodejs? Apr 21, 2024 am 05:18 AM

Terdapat dua fail berkaitan npm dalam direktori pemasangan Node.js: npm dan npm.cmd Perbezaannya adalah seperti berikut: sambungan berbeza: npm ialah fail boleh laku dan npm.cmd ialah pintasan tetingkap arahan. Pengguna Windows: npm.cmd boleh digunakan daripada command prompt, npm hanya boleh dijalankan dari baris arahan. Keserasian: npm.cmd adalah khusus untuk sistem Windows, npm tersedia merentas platform. Cadangan penggunaan: Pengguna Windows menggunakan npm.cmd, sistem pengendalian lain menggunakan npm.

Adakah terdapat perbezaan besar antara nodejs dan java? Adakah terdapat perbezaan besar antara nodejs dan java? Apr 21, 2024 am 06:12 AM

Perbezaan utama antara Node.js dan Java ialah reka bentuk dan ciri: Didorong peristiwa vs. didorong benang: Node.js dipacu peristiwa dan Java dipacu benang. Satu-benang vs. berbilang benang: Node.js menggunakan gelung acara satu-benang dan Java menggunakan seni bina berbilang benang. Persekitaran masa jalan: Node.js berjalan pada enjin JavaScript V8, manakala Java berjalan pada JVM. Sintaks: Node.js menggunakan sintaks JavaScript, manakala Java menggunakan sintaks Java. Tujuan: Node.js sesuai untuk tugas intensif I/O, manakala Java sesuai untuk aplikasi perusahaan besar.

Adakah nodejs bahasa pembangunan bahagian belakang? Adakah nodejs bahasa pembangunan bahagian belakang? Apr 21, 2024 am 05:09 AM

Ya, Node.js ialah bahasa pembangunan bahagian belakang. Ia digunakan untuk pembangunan bahagian belakang, termasuk mengendalikan logik perniagaan sebelah pelayan, mengurus sambungan pangkalan data dan menyediakan API.

Bagaimana untuk menggunakan projek nodejs ke pelayan Bagaimana untuk menggunakan projek nodejs ke pelayan Apr 21, 2024 am 04:40 AM

Langkah-langkah penggunaan pelayan untuk projek Node.js: Sediakan persekitaran penggunaan: dapatkan akses pelayan, pasang Node.js, sediakan repositori Git. Bina aplikasi: Gunakan npm run build untuk menjana kod dan kebergantungan yang boleh digunakan. Muat naik kod ke pelayan: melalui Git atau Protokol Pemindahan Fail. Pasang kebergantungan: SSH ke dalam pelayan dan gunakan pemasangan npm untuk memasang kebergantungan aplikasi. Mulakan aplikasi: Gunakan arahan seperti node index.js untuk memulakan aplikasi, atau gunakan pengurus proses seperti pm2. Konfigurasikan proksi terbalik (pilihan): Gunakan proksi terbalik seperti Nginx atau Apache untuk menghalakan trafik ke aplikasi anda

Mana satu untuk dipilih antara nodejs dan java? Mana satu untuk dipilih antara nodejs dan java? Apr 21, 2024 am 04:40 AM

Node.js dan Java masing-masing mempunyai kebaikan dan keburukan dalam pembangunan web, dan pilihan bergantung pada keperluan projek. Node.js cemerlang dalam aplikasi masa nyata, pembangunan pesat dan seni bina perkhidmatan mikro, manakala Java cemerlang dalam sokongan, prestasi dan keselamatan gred perusahaan.

See all articles