非同步研究


Semaphore
BlockingCollection

這幾天看到有些人非同步寫法裡面使用兩種東西
Semaphore
BlockingCollection
所以好奇研究一下這兩個東西是什麼 做個筆記

Semaphore根據
https://www.youtube.com/watch?v=GKjM4AX8NME

https://docs.microsoft.com/zh-tw/dotnet/api/system.threading.semaphore?view=net-5.0
可以理解的是說 在非同步的情況下 其實最難控制的是怎麼減速 當然canceltoken是一件事情,但是像GOOGLE那樣就不是取消而是我要控制多少可以怎麼跑
以前我們用THREADPOOL來限制這件事情,從這個池子裏面拿WORKER出來,但是現在Semaphore改成另一個方法 用等待的方法來限制但是跟以前POOL的方法不一樣
Pool是裡面存放12345,五條thread那就是他但是Semaphore是裡面存放幾條不一定是那些,可以透過看work的thread發現這件事情
好處是  比起lock更避免死結


另外 關於BlockingCollection
目前看source code 就是concurrent的更進化版本
https://docs.microsoft.com/zh-tw/dotnet/api/system.collections.concurrent.blockingcollection-1?view=net-5.0#constructors
執行續安全的型別
把之前的那些bag collection 放在一起
內建了一個queue所以有相關的功能是有序列的觀念的東西



結論,沒事不要去亂看andrew的文章看著看著兩天時間又過去了…
(https://columns.chicken-house.net/2021/03/01/practice-01/?fbclid=IwAR1g4EQn4bnJjdTzpjaM7icjJ6YQPv2TLSCyvC6HUaN3esCwKuSJIdD8MoA
推坑