2011-03-25 32 views
42

解釋無狀態和有狀態系統之間的差異,以及國家對並行性的影響。無狀態和有狀態系統之間有什麼區別,它們如何影響並行性?

+0

你可以看看這個:http://www.cs.swarthmore.edu/~newhall/cs85/s08/trilok.pdf – 2011-03-25 17:38:14

+0

[Stateless vs Stateful - 我可以使用一些具體信息](http: //www.stackoverflow.com/questions/5329618/stateless-vs-stateful-i-could-use-some-concrete-information) – 2011-03-25 17:43:58

+2

作業?請提前一點。 – David 2011-03-25 18:09:14

回答

60

A 無國界系統可以看作是一個盒子[黑色? ;)]其中在任何時間點的輸出(一個或多個)的值對輸入的(一個或多個)的值僅取決於[後一定的處理時間]

狀態系統代替可以被看作是一個其中在任何時間點輸出值取決於輸入值和內部狀態,所以基本上有狀態的系統就像是一個「內存」的狀態機一樣取決於系統接收到的先前輸入,輸入(一個或多個)值的集合可以生成不同的輸出。

並行編程的角度來看,一個無國籍系統中,如果適當地實施,可以由多個線程/任務在同一時間沒有任何併發​​問題執行[例如認爲重入函數的] A 有狀態系統將要求多線程的執行訪問並以獨佔方式更新系統的內部狀態,因此需要串行化[同步]點。

26

有狀態服務器保持連接之間的狀態。無狀態服務器不。

因此,當您向有狀態服務器發送請求時,它可能會創建某種連接對象來跟蹤您請求的信息。當您發送另一個請求時,該請求將根據先前請求的狀態進行操作。所以你可以發送一個請求來「打開」某些東西。然後你可以發送一個請求,稍後「關閉」它。在這兩個請求之間,這件事在服務器上是「開放的」。

當您向無狀態服務器發送請求時,它不會創建任何跟蹤有關請求的信息的對象。如果你在服務器上「打開」某些東西,那麼服務器根本就沒有保留任何你打開的東西的信息。 「接近」的操作是沒有意義的,因爲沒有什麼可以結束的。

HTTP和NFS是無狀態協議。每個請求都是獨立的。

有時cookie用於向無狀態協議添加某些狀態。在HTTP(網頁)中,服務器向您發送一個cookie,然後瀏覽器保存該狀態,僅在隨後的請求中將其發送回服務器。

SMB是一個有狀態的協議。客戶端可以在服務器上打開文件,並且服務器可以拒絕其他客戶端訪問該文件,直到客戶端關閉它。

+2

這個答案沒有解決州/ less/ful/ness對並行性的影響問題。 – 2013-07-05 12:30:12

相關問題