iT邦幫忙

鐵人檔案

2021 iThome 鐵人賽
回列表
自我挑戰組

從C到JS的同步非同步探索 系列

將用C\C++從作業系統的角度開始探索同步非同步的基本概念,
包含 spinlock & mutex & semaphore & atomic 的概念與原理。
之後使用C\C++實踐基於上述原理的併發式資料結構,
包含message queue, threadPool, mapReduce。
到此為止, 將完成同步非同步議題在底層的運作, 接著進入應用面。
利用Node實作簡易的後端, 在這同時會進行JS同步非同步教學。
包含 callback , promise , async/await 等。
最後試著實踐一個高併發後端伺服器的部分模塊。

鐵人鍊成 | 共 30 篇文章 | 6 人訂閱 訂閱系列文 RSS系列文
DAY 21

[Day 21] Node 註冊事件 2

前言 昨天我們聊到, C++ 連接層中的 TCP 物件被 JS 調用, 拿來註冊事件及回調函數, 今天讓我們繼續看下去。 C++ 連接層 https://git...

2021-09-21 ‧ 由 leon123858 分享
DAY 22

[Day 22] Node Event loop 1

前言 昨天, 我們知道了 JS 層藉由 V8 引用 C++ 層, C++ 層又利用 AIO (非同步IO) 註冊事件, 接著我們就來看看負責處理事件的 libu...

2021-09-22 ‧ 由 leon123858 分享
DAY 23

[Day 23] Node Event loop 2

前言 今天繼續看看 event loop 的核心循環, uv_run() , 可以查看以下網址 https://github.com/nodejs/node/b...

2021-09-23 ‧ 由 leon123858 分享
DAY 24

[Day 24] Node Event loop 3

前言 今天繼續看看 event loop 的核心循環, uv_run() , 可以查看以下網址 https://github.com/nodejs/node/b...

2021-09-24 ‧ 由 leon123858 分享
DAY 25

[Day 25] Node Event loop 4

前言 今天繼續看看 event loop 的核心循環, uv_run() , 可以查看以下網址 https://github.com/nodejs/node/b...

2021-09-25 ‧ 由 leon123858 分享
DAY 26

[Day 26] Node thread pool 1

前言 回顧昨天提到, pending 階段處理 polling 得來的事件, 且調用特定的 callback 。 大家對 pending stage 的各種 c...

2021-09-26 ‧ 由 leon123858 分享
DAY 27

[Day 27] Node thread pool 2

前言 昨天聊到了 TP 告知 main Thread 任務完成的方法。今天說說 TP 本身在運行甚麼。 原始碼來自以下網址 : https://github.c...

2021-09-27 ‧ 由 leon123858 分享
DAY 28

[Day 28] Node thread pool 3

前言 今天的內容是整理整個 threadpool (TP) 的調用過程 回顧 在 pending 階段當遇到 async 類型的任務會執行以下這段 void u...

2021-09-28 ‧ 由 leon123858 分享
DAY 29

[Day 29] Node 非同步知識統整

前言 今天會統整這 10 多天關於 Node 框架的探索內容。 正文 Node 的非同步, 本質是對 AIO 機制的活用, 其中 linux 使用的 AIO...

2021-09-29 ‧ 由 leon123858 分享
DAY 30

[Day 30] 模仿 Node 的非同步實驗兼完賽心得

實作 所謂讀了原始碼卻不實作與驗證, 那不過就是對原始碼的意淫而已, 所以在這個系列文的結尾總是還要寫點東西的。 但因為還有太多部分沒聊到, 所以我臨時把最後要...

2021-09-30 ‧ 由 leon123858 分享