執行緒同步 12:中斷信號

我們知道在呼叫休眠函式時,程式實際休眠的時間可能會比你所要求的時間還要久; 但是你知道嗎,有的時候實際休眠的時間會比所要求的還要短,甚至有可能短很多! 這是怎麼回事呢?本篇就讓我們來看看有關信號,或者有時被稱為軟體中斷的內容。

Read More…

執行緒同步 11:睡眠與喚醒

執行緒寫了那麼多期,對於一個其實相當重要的東西經常總是一筆帶過,那就是休眠。 對於許多自學出家的程式員來說,休眠可能不過就是呼叫一個函式去休息一段時間而已, 然而實際上休眠的背後藏著許多眉角的呢! 對休眠這件事裡裡外外多加了解一番融會貫通,將有助於我們能站在更高的位置掌握多緒程式的運作效能。

Read More…

執行緒同步 10:輪詢

在日常程式設計中,許多的程式呼叫都會暫停並等待,但如果我們想要更多的使用彈性, 例如可以中途做些別的事情、或者想要中途可以取消不等了、或者想要顯示工作的進度等等的話, 我們還可以怎麼辦呢? 那麼本次就來介紹一個非常簡單也非常常見的設計方法:輪詢。

Read More…

執行緒同步 6:互斥子

上集介紹了應用在執行緒同步用途當中最簡單快速便利的原子變數(Atomic Variable)。 然而原子變數的使用彈性相當有限, 在實際的應用用途中但凡我們程式的資料運算邏輯稍微複雜一點,原子變數很容易就不敷使用了。 那麼本篇我就來介紹一種在多緒同步用途中使用最廣泛、出鏡率最高的一種同步工具:互斥子(Mutex)。

Read More…

執行緒同步 5:原子變數

上期我們看到當不同的執行緒彼此共同存取同一個變數的時候會發生什麼樣的異常結果, 但是在現實中的程式裡又沒辦法完全避免掉共同資料的存取,那麼我們能夠怎麼辦呢? 本篇就來介紹第一個幫助我們解決執行緒資料競爭問題的方案:原子變數。

Read More…