2011/09/28

Indy -- 專業的Blocking

Indy (Internet Direct)與Dbexpress在Delphi中是我最喜歡的技術類型。
今天來說說它的特色之一 -- Blocking

很多人都會很好奇,SocketServer和idTCPServer主要的差異在於一個預設為non-Blocking,另一個則是恆為Blocking,但這兩者之間有什麼樣的不同呢?

我不知道!(被毆)

但在 Indy in Depth 中提供了這樣的解釋 (原文自己去找!):

Blocking = 專業!

1. 簡單的程式設計:Blocking socket是非常簡單的設計方式。所有使用者都能把邏輯程式寫在同一個空間且連續的範圍裡面。

2. 跨平台(好像一定都會看到這個特色):由於Unix使用Blocking socket,能輕易地寫出便於移轉的程式碼。Indy發揮這個論述,去實現單一來源的跨平台能力。其它跨平台的Socket元件則是透過內部使用Blocking來模仿non-Blocking的行為。

3. 在執行緒裡工作:由於Blocking Socket先天就屬於連續的封裝類型,所以非常適合與執行緒搭配。

4. 不依賴Messages:Non-Blocking Socket依存於視窗訊息傳遞系統。於執行緒下使用時,必須建立獨立的訊息佇列。不使用執行緒時,則在進行多點連線時非常容易造成效能瓶頸。















不管你信不信,反正我是信了!

沒有留言:

張貼留言