2013-05-15 25 views
0

假設我們正在實現訪問某些共享數據的服務,並且沒有辦法將這些數據劃分爲可以獨立訪問的部分。出於這個原因,在任何給定的時間,不能有一個以上的單線程讀/寫這些數據。如何配置Netty以擁有單個工作線程?

解決這個問題的一個正確但效率不高的方法是僅使用一些同步技術(信號量,監視器等),以便Netty工作線程不會通過同時訪問它來破壞共享數據(何時服務請求)。然而,整個鎖定/解鎖肯定會使性能下降很多。

所以,第一個問題是:

如何配置的Netty有一個單獨的工作線程?

而第二個是:

這可能是一個不錯的設計,解決有其訪問不能由多個線程在任何給定的時間內完成共享數據的問題?

1-worker解決方案似乎解決了這個問題,但我想知道這會如何影響Netty的性能,因爲可能有成千上萬的客戶端同時連接,發送請求並等待回覆。 。

+0

您可以在不變的共享數據只是工作:無需鎖定完全可以避免腐敗,並且每個工作線程都會獲得數據的一致副本。 –

+0

問題是,我正在處理的數據必須隨時更改(實際上,如果沒有寫入,那麼我認爲無論如何都不需要同步)。 –

回答

0
  1. 給這個的SocketFactory單線程執行,或
  2. 放共享,ExecutionHandler用單線程執行的管道
相關問題