2009年6月22日 星期一

Apache MultiThread多執行緒寫法

在WIN32的Apache中,MPM模組(多進程並發處理模塊)使用多執行緒來處理Request,其中避免單一資源被多個執行緒搶奪,必須使用一些技巧,可以參考MSDN中的Synchronization Objects主題文章(http://msdn.microsoft.com/en-us/library/ms686364(VS.85).aspx),常用的Synchronization Object有下列幾種:Event、Mutex、Semaphore和Waitable Timer。利用Synchronization Objects可以被指定給其中之一的Wait Function,讓這些Thread可以等等,如此避掉單一資源被多個執行緒搶奪。

這些Object的特點如下:
除了這四個物件之外,其他可以用來同步執行緒的物件還有:Change notification、Console input、Job、Memory resource notification、Process、Thread等。

這裡還沒有提到一點,為了讓執行緒可以停下來等同步,我們必須使用Wait Function這個功能,Wait Function會在執行的時候block停止住,直到特定的條件(criteria)符合達成才會繼續執行下去,當然你也可以設定一段時間(time-out interval),當條件不符合時,進入等待的狀態,若時間超過則會繼續執行而不等待。


沒有留言:

張貼留言