執行緒同步 6:互斥子

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

Read More…

執行緒同步 5:原子變數

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

Read More…

執行緒同步 4:為什麼出錯?

經過前面幾篇, 想必讀者已經對執行緒與其運作原理有了一定的認識,也能夠自己動手開始製做多執行緒的程式了。 但是當真正開始嘗試以後,應該很快就能發現一些奇怪的現象。 比如有些執行緒共同存取的變數好像偶爾會冒出怪怪的結果, 而如果共同存取的是一些比較複雜的物件如標準函式庫的容器等等的話, 可能還會冒出各種奇奇怪怪的異常或甚至導致程式當掉等等問題。 那麼這是怎麼回事呢?為什麼會出問題呢?

Read More…

螺旋槳 11:戰鬥機為什麼堅持單發動機?

不知道有沒有人好奇這麼一個問題: 在螺旋槳大行其道的時代,那些戰鬥機為什麼(幾乎)都只使用一副螺旋槳? 不同於現代的噴射戰鬥機,有些採用單發動機,有些採用雙發動機,甚至還有三發動機的; 然而我們所熟悉的那些舊時代裡的螺旋槳戰鬥機,卻總是堅持單發動機和單螺旋槳的配置,這是為什麼呢? 本篇就要來解答這樣的問題!

Read More…

螺旋槳 10:螺旋槳佈局

在有了螺旋槳之後,該以什麼樣的方式將螺旋槳放在飛機上呢? 其實在前篇 [1] 已經探討過其中的一部份了, 而本篇將要來看看更多關於螺旋槳飛機的動力佈局設計。

Read More…