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 1

[Day 1] 前言-為甚麼要探索?

身為一個 Node 後端工程師, 對我而言 async/await 等非同步語法的使用已經非常順手, 其背後所代表的概念也早就不能令我困惑。 但事實上當我面對一...

2021-09-01 ‧ 由 leon123858 分享
DAY 2

[Day 2] 一個非同步案例 httpServer

前言 或許有些人會有所困惑, 同步非同步的實踐難在哪裡, 為甚麼要一直巴拉巴拉, 但事實上, 非同步就是創建出多條 thread 無序的佔用資源進行運算, 而當...

2021-09-02 ‧ 由 leon123858 分享
DAY 3

[Day 3] Atomic Operation

前言 昨天簡單猜測了非同步框架所應具備的基本功能 ( 某種資料模式, thread schedule ), 可以發現 Multi-threading data...

2021-09-03 ‧ 由 leon123858 分享
DAY 4

[Day 4] lock-free and CAS

前言 昨天聊到原子操作時提到了2個名詞, 有些人可能不熟, 會在今天簡單說明。明天會有相應的實作。 lock-free 的意義 是一種分類, 在描述某類演算法在...

2021-09-04 ‧ 由 leon123858 分享
DAY 5

[Day 5] lock-free stack

前言 今天將會實作資料結構 stack , 之所以選擇 stack 是因為其製作簡單, 可以讓讀者輕鬆的理解 CAS 在其中扮演的腳色。 node: ( 協助...

2021-09-05 ‧ 由 leon123858 分享
DAY 6

[Day 6] .Net WhenAll 底層(1)

前言 這系列教學文的目的是要探索具備非同步功能的框架在底層發生了什麼事, 甚至寫一個簡單的框架出來, 目前我們終於進展到閱讀我們的第一個目標 .Net 。 之所...

2021-09-06 ‧ 由 leon123858 分享
DAY 7

[Day 7] .Net WhenAll 底層(2)

前言 我們今天要試著解決昨天閱讀 WhenAll 留下來的兩個問題 為何要 "atomic" 的把 task 的總數減一, 看起來只有一條...

2021-09-07 ‧ 由 leon123858 分享
DAY 8

[Day 8] .Net Task 底層(1)

前言 昨天聊過 Task.WhenAll , 得知其底層就是等待多個 Task 完成的機制, 那 Task 到底是甚麼呢 ? Task類別代表不會傳回值,而且...

2021-09-08 ‧ 由 leon123858 分享
DAY 9

[Day 9] .Net Task 底層(2)

前言 我們昨天聊到要透過解析 threadPool 檔案中的 FinishContinuations method 來了解 .Net 框架中 threadPoo...

2021-09-09 ‧ 由 leon123858 分享
DAY 10

[Day 10] .Net Task 底層(3)

前言 今天, 是系列文的小小里程碑, 我們終於在今天找出了 task 的其中一種非同步演算法。他被用在讓 Task 接著執行下一個任務的 method 中。 讓...

2021-09-10 ‧ 由 leon123858 分享