最近了解tornado框架, 于是聽人說了的這么一句話, python庫并不是都支持異步的, 好吧于是聯想一下, 可能說的是如果子線程 或 子進程同時在運行這段代碼, 不管怎么樣,要么不會有同時在操作的變量, 要么就是對這種的變量做了鎖的處理, 不知道到這里的支持異步 和 線程安全的代碼是否想表達的是一個意思呢?
2 回答

慕尼黑8549860
TA貢獻1818條經驗 獲得超11個贊
我理解的 異步 和 線程安全 是兩個不同領域的概念.
異步
舉個 同步 的例子
f1() f2() f3()
這種調用方式使得代碼只能按順序執行, 假設 f1-3 調用耗時分別是 1,2,3 秒, 那么執行完需要 1+2+3=6 秒.
而異步調用可能是這樣的
task1 = async_f1() task2 = async_f2() task3 = async_f3() gather(task1, task2, task3)
這樣執行完只需要 3 秒, 因為 3 個調用可以同時進行.
線程安全
以函數為例, 線程安全意味著多個線程同時調用時, 各個線程之間不會有沖突.

慕的地10843
TA貢獻1785條經驗 獲得超8個贊
這里有個前提是在業務邏輯層面,而系統IO通常都是同步。
異步是調用發出后就直接返回了,結果要等被調用的狀態或者回調通知。
而常見 result = some_function(xxx), 顯然是要等結果的,這樣就無法直接支持異步調用。
線程安全和 異步顯然不是一個意思。
添加回答
舉報
0/150
提交
取消