Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

NodeJS :: บันทึก code แบบ blocking และ non-blocking ไว้นิดหน่อย

$
0
0

พอดีได้คุยเรื่องของ code ที่พัฒนาด้วย NodeJS + Express เล็กน้อย
ซึ่งมี code บางตัวที่น่าสนใจ
เนื่องจากเป็น code ที่ทำให้การทำงานมันเป็น Blocking IO ซะงั้น
เลยสรุปตัวอย่างไว้นิดหน่อย
เพื่อทำให้เห็นว่ NodeJS มันทำงานอย่างไร
เมื่อมีจำนวน concurrent ของผู้ใช้งานเยอะ ๆ

ตัวอย่าง code ง่าย ๆ

แยกเป็น

  • / คือ router หลัก
  • /block คือ code ที่ทำงานแบบ blocking ซึ่งจะรอไปจบกว่าเวลาจะเกิน 1 วินาที
  • /non-block คือ code ที่ทำงานแบบ non-blocking แน่นอนว่าจะรอ 1 วินาทีเช่นเดียวกัน
[gist id="25cdb90dded559236ad6f079ab5cfcf4" file="server.js"]

คำอธิบาย

ระหว่าง /block และ /non-block จะได้ผลการทำงานที่แตกต่างกัน
เนื่องจาก NodeJS นั้นทำงานแบบ Single thread นั่นเอง
ถ้าเจอ code แบบ blocking เข้าไปแล้ว
request อื่น ๆ ก็ต้องรอเข้าคิวนั่นเอง
ทำให้การทำงานช้ามาก ๆ

ผลการทดสอบแบบง่าย ๆ

[gist id="25cdb90dded559236ad6f079ab5cfcf4" file="result.txt"]

เขียน code เพื่อดูผล จะทำให้เข้าใจมากขึ้นเยอะเลย
ดังนั้นรูปแบบการเขียน code จึงสำคัญมากเช่นกัน


Viewing all articles
Browse latest Browse all 1997

Trending Articles