ශ්‍රී ලංකාවේ නවතම තාක්ෂණික පුවත් 2026-07-24, Friday
💻 ක්‍රමලේඛනය · 🕒 කියවීමට විනාඩි 2 · 👁 1

Node.js හි readFileSync සහ readFile අතර වෙනස – බ්ලොක් කිරීම හා අසින්ක්‍රෝනස් ක්‍රියාවලිය පැහැදිළි කරමු

Node.js හි readFileSync සහ readFile අතර වෙනස – බ්ලොක් කිරීම හා අසින්ක්‍රෝනස් ක්‍රියාවලිය පැහැදිළි කරමු

Node.js එකේ ගොනු කියවීම සරලයි කියලා හිතන්නෙත් නැහැ. ඒක V8 එන්ජින් එකක් පමණක් නොව, C++ බයින්ඩින්, libuv, OS, හාර්ඩ්වෙයා වගේ බොහෝ ස්තරවලින් යන ගමන් එකතුවක්. මේ ලිපියේ තුන්වන කොටසෙදි අපි readFileSync හා readFile කෙරෙහි ඇති වැදගත් වෙනස, ඒකට “blocking” කියන තේරුම කුමක්ද කියලා පරිශීලක‑මිතුරුවක් වගේ සරලව පැහැදිළි කරමු.

Blocking කියන්නේ ඇත්තටම මොකක්ද?

බොහෝ ටියුටෝරියලයන් “Blocking = වැඩක් නතරවීම” කියනවා. ඒ නමුත් නතරවීමේ හේතුව කුමක්ද? උදාහරණයක් බලමු: console.log("Start"); const data = fs.readFileSync("msg.txt", "utf8"); console.log(data); console.log("End"); මෙහි JavaScript ත්‍රෙඩ් එක readFileSync අරගෙන ඉදිරියට යන්න බැහැ. එය අරගෙන යන තුරා, ත්‍රෙඩ් එක “කාර්යය” එකක් ගොඩක් ගින්නක් වගේ තබාගෙන, අනික් කාර්යයක් ආරම්භ කළ නොහැක. මෙය “blocking” කියන නාමය ලැබෙන්නේ ඒ නිසා.

Call Stack එකේ කතාව

JavaScript එකේ Call Stack කියන්නේ කුලියෙන් කියන පොතේ වට්ටෝරුවක්. එක්කෝ වැඩක් ආරම්භ වුනොත්, ඒක Stack එකේ ඉහලට තබාගෙන, අවසන් වුනොත් ඉවත් කරයි. එකවර එකම Stack Frame එකක් පමණක් ක්‍රියාත්මක වීම නිසා, JavaScript එක “single‑threaded” කියලා හඳුන්වයි.

readFileSync() ඇතුළේ සිදුවෙන්නේ කුමක්ද?

කේතය fs.readFileSync("notes.txt", "utf8") ක්‍රියාත්මක වෙද්දී, JavaScript → Node API → C++ Binding → OS → SSD යන පියවර හරහා ඉල්ලීම යනවා. මේ අතර Call Stack එකේ readFileSync තවමත් ඉහලින් සිටින නිසා, ඊළඟ console.log("2") ක්‍රියා නොකරයි. ගොනුවේ දත්ත ආපසු එන තුරු JavaScript “නතර” වෙලා ඉඳී. දත්ත ලැබුනොත් Stack එක නිදහස් වෙලා, ඉදිරි පියවරට යයි. මේක සින්ක්‍රෝනස් ක්‍රියාවලිය.

readFile() – අසින්ක්‍රෝනස් විදිය

අසින්ක්‍රෝනස් ආකාරයේ fs.readFile භාවිතා කරන විට, Node.js ඉල්ලීම OS වෙත යවන අතර, JavaScript ත්‍රෙඩ් එක තවත් කාර්යයක් (callback) සූදානම් කරගන්න හෝ Event Loop එකේ පසුදැක්මකට යයි. එවිට Stack එක ඉවත් වී, ප්‍රධාන ලූප් එක තවත් ඉන්පසු කාර්යයන් සකසයි. ගොනුවේ දත්ත ලැබුනොත් callback ක්‍රියාත්මක වෙයි. මෙය “non‑blocking” කියලා හඳුන්වයි.

ශ්‍රී ලංකාවට ඇති වැදගත්කම

  • සිසුන්ට – Call Stack, blocking, async concepts ඉගෙන ගැනීම, පාඨමාලා හා පළපුරුදු වැඩි කරයි.
  • ඩිවෙලපර්ලාට – වැඩි ප්‍රදර්ශන කාලයක්, සාර්ථක API නිර්මාණය, පද්ධති කාර්යක්ෂමතාවය වැඩි කරයි.
  • ව්‍යාපාරිකයන්ට – Node.js භාවිතයෙන් වේගවත් වෙබ් සේවා, අඩු latency, සම්පූර්ණ asynchronous I/O නිසා පාරිභෝගික අත්දැකීම ඉහළ යයි.

අවසන් වශයෙන්, Node.js එකේ synchronous හා asynchronous ක්‍රියාකාරීත්වය අතර ඇති වෙනස, වැඩි පරිසරයකට සුදුසු තේරීමක් ලබාදෙයි. ඔබේ ව්‍යාපාරය හෝ ව්‍යාපෘතියේ කුමන ආකාරයේ I/O අවශ්‍යදැයි හොඳින් පරීක්ෂා කරගැනීම, කාර්යක්ෂම කේත ලියීමේ මූලික පියවරයි.

💡 Node.js හි async ක්‍රියාවලිය දැන්ම ඉගෙන ගන්න!
මූලාශ්‍රය මෙම ලිපිය AI මගින් රචිත මුල් සාරාංශයකි. සම්පූර්ණ වාර්තාව කියවන්න:
Dev.to ↗
#Node.js #JavaScript #Blocking #Asynchronous #Programming