執行緒同步 5:原子變數
上期我們看到當不同的執行緒彼此共同存取同一個變數的時候會發生什麼樣的異常結果, 但是在現實中的程式裡又沒辦法完全避免掉共同資料的存取,那麼我們能夠怎麼辦呢? 本篇就來介紹第一個幫助我們解決執行緒資料競爭問題的方案:原子變數。
上期我們看到當不同的執行緒彼此共同存取同一個變數的時候會發生什麼樣的異常結果, 但是在現實中的程式裡又沒辦法完全避免掉共同資料的存取,那麼我們能夠怎麼辦呢? 本篇就來介紹第一個幫助我們解決執行緒資料競爭問題的方案:原子變數。
經過前面幾篇, 想必讀者已經對執行緒與其運作原理有了一定的認識,也能夠自己動手開始製做多執行緒的程式了。 但是當真正開始嘗試以後,應該很快就能發現一些奇怪的現象。 比如有些執行緒共同存取的變數好像偶爾會冒出怪怪的結果, 而如果共同存取的是一些比較複雜的物件如標準函式庫的容器等等的話, 可能還會冒出各種奇奇怪怪的異常或甚至導致程式當掉等等問題。 那麼這是怎麼回事呢?為什麼會出問題呢?
在解釋明白了作業系統實現多工的原理後,本篇要來整理一些與執行緒相關的常用名詞解釋, 特別是那些一般可能容易混淆的名詞與含義。
本篇要來解釋電腦能夠同時進行許多程式的多工原理, 這對於我們進一步認識系統機制,以及了解後面介紹的各種執行緒機制相當有幫助!
這個系列要來介紹各種執行緒同步的方法工具,包含各種的鎖等等。 而本篇首先讓我們先來初步認識什麼是執行緒,並簡單的嘗試自己建立執行緒的方法。
不知道有沒有人好奇這麼一個問題: 在螺旋槳大行其道的時代,那些戰鬥機為什麼(幾乎)都只使用一副螺旋槳? 不同於現代的噴射戰鬥機,有些採用單發動機,有些採用雙發動機,甚至還有三發動機的; 然而我們所熟悉的那些舊時代裡的螺旋槳戰鬥機,卻總是堅持單發動機和單螺旋槳的配置,這是為什麼呢? 本篇就要來解答這樣的問題!
在有了螺旋槳之後,該以什麼樣的方式將螺旋槳放在飛機上呢? 其實在前篇 [1] 已經探討過其中的一部份了, 而本篇將要來看看更多關於螺旋槳飛機的動力佈局設計。
連著好幾篇螺旋槳的性能計算比較,不知會不會有些人覺得太複雜困難,感覺要把頭給看暈了? 那麼本篇我就來換個思路,從完全不同的另一個角度來探討噴氣推進的原理。 更有意思的是,本篇要探究的原理還非常簡單、好懂,並且能夠套用在幾乎所有採用噴流原理的推進裝置, 不論是螺旋槳、渦輪噴射、渦輪風扇、或是直昇機還是火箭等等, 只要是利用流體的反作用力來作為推進手段的通通都能夠適用!
在我們見過的那些螺旋槳飛機裡面,有的飛機螺旋槳只有兩葉,有的三葉、有的四葉, 還有的更多,五花八門。 那麼槳葉的數量是怎麼決定的呢?難道是靠美感嗎? 甚至於,有些飛機的螺旋槳相當巨大,有些飛機的螺旋槳看起來小得多, 那麼又是哪些因素造成這些差別呢? 本篇就要來探討這些不同槳葉數量和尺寸大小對於螺旋槳性能的影響。
繼前篇 [1] 介紹了螺旋槳分析的計算後,本篇要來挑幾個分析案例, 給我們展示一些螺旋槳的性能表現和特性。