ਬਲਾਕਿੰਗ (blocking) ਓਪਰੇਸ਼ਨ ਸਿੰਕ੍ਰੋਨਸ ਢੰਗ ਨਾਲ ਚੱਲਦੇ ਹਨ ਅਤੇ ਇੱਕੋ-ਇੱਕ JavaScript ਥਰੈੱਡ ਨੂੰ ਪੂਰਾ ਹੋਣ ਤੱਕ ਰੋਕੀ ਰੱਖਦੇ ਹਨ — ਇਸ ਦੌਰਾਨ ਹੋਰ ਕੁਝ ਵੀ ਨਹੀਂ ਚੱਲ ਸਕਦਾ। ਨਾਨ-ਬਲਾਕਿੰਗ (non-blocking) ਓਪਰੇਸ਼ਨ ਕੰਮ ਸ਼ੁਰੂ ਕਰਦੇ ਹਨ, ਤੁਰੰਤ ਵਾਪਸ ਮੁੜਦੇ ਹਨ, ਅਤੇ ਨਤੀਜਾ ਬਾਅਦ ਵਿੱਚ ਇੱਕ callback, Promise ਜਾਂ event ਰਾਹੀਂ ਦਿੰਦੇ ਹਨ, ਇਸ ਲਈ ਥਰੈੱਡ ਹੋਰ ਕੰਮ ਕਰਨ ਲਈ ਖਾਲੀ ਰਹਿੰਦਾ ਹੈ।
Node ਸਿੰਗਲ-ਥਰੈੱਡਡ ਹੋਣ ਦੇ ਬਾਵਜੂਦ ਨਾਨ-ਬਲਾਕਿੰਗ ਕਿਉਂ ਹੈ
ਤੁਹਾਡਾ JavaScript ਥਰੈੱਡ ਉੱਤੇ ਚੱਲਦਾ ਹੈ ਜਿਸ ਨੂੰ ਚਲਾਉਂਦਾ ਹੈ। I/O (ਫ਼ਾਈਲਾਂ, ਨੈੱਟਵਰਕ, DNS) ਨੂੰ ਨੂੰ ਸੌਂਪਿਆ ਜਾਂਦਾ ਹੈ, ਜੋ ਅੰਦਰੋਂ OS ਦੀਆਂ ਅਸਿੰਕ੍ਰੋਨਸ ਸਹੂਲਤਾਂ ਅਤੇ ਇੱਕ ਛੋਟਾ ਵਰਤਦਾ ਹੈ। ਜਦੋਂ ਉਹ ਕੰਮ ਥਰੈੱਡ ਤੋਂ ਬਾਹਰ ਹੁੰਦਾ ਹੈ, event loop ਹੋਰ callback-ਾਂ ਦੀ ਪ੍ਰੋਸੈਸਿੰਗ ਕਰਦਾ ਰਹਿੰਦਾ ਹੈ। ਜਦੋਂ I/O ਪੂਰਾ ਹੁੰਦਾ ਹੈ, ਇਸ ਦਾ callback ਕਤਾਰ ਵਿੱਚ ਲੱਗਦਾ ਹੈ ਅਤੇ ਚੱਲਦਾ ਹੈ।
