亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SQL Server多進程多線程并發情況下如何保證

SQL Server多進程多線程并發情況下如何保證

婷婷同學_ 2018-09-05 14:14:16
查看完整描述

1 回答

?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

1、多進程并發
在傳統UNIX中較常用,針對每一種單獨的業務邏輯的實例生成不同的線程進行處理。典型的程序實例是針對TCP的多個不同的客戶端連接,fork出多個子進程進行處理,每一個客戶端對應一個單獨的子進程,在子進程處理退出后,由父進程回收其資源。
優點:各進程間的地址空間相互隔離,不會因為某些不當操作將整個應用搞掛。
業務邏輯代碼簡單清晰,代碼平鋪直敘,沒有復雜的異步狀態邏輯。
缺點:如果需要在進程間進行交互或者共享數據,需要使用IPC。
2、多線程并發
在現代操作系統windows、linux中很常用,針對單獨的業務邏輯的不同的實例在同一個進程中創建多個線程進行并發處理。典型的例子是,TCP的多個客戶端在同一個進程中處理,針對每個客戶端都單獨對應的線程進行交互,共享同一個進程的所有資源。
優點:共享進程空間,訪問共享數據非常容易。
沒有多的進程空間開銷,線程上下文切換快,調度效率比多進程高。
業務邏輯代碼簡單清晰,代碼平鋪直敘,沒有復雜的異步狀態邏輯。
缺點:維護線程的工作由進程內部代碼處理,比如線程數量,增加一定的復雜性。
線程間共享數據的競爭關系復雜,需要處理同步和死鎖問題。
3、IO多路復用
即在單線程控制多個異步業務邏輯,也就是事件驅動多個業務的狀態處理,典型的有windows中的消息處理機制,還有linux中的信號量處理。可以在單一線程中,處理多種不同的業務邏輯,比如同時處理用戶輸出,鼠標點擊,窗口重繪和網絡輸入。
優點:所有業務實例的邏輯在單一線程中處理,排除代碼時序BUG,理論上不存在競爭和死鎖問題。
沒有多的進程空間開銷,也沒有上下文切換問題,CPU利用率高。
共享進程空間,訪問共享數據非常容易。
缺點:
線程需要管理多個不同實例的狀態機,并正確處理對應事件導致不同狀態的遷移。
業務種類多的情況下,需要人為代碼控制多種狀態機。
并發點越多造成狀態越多,管理粒度越細, 業務邏輯代碼不是順序的,不容易維護和理解。
異步狀態過多,造成資源管理較為復雜,容易產生資源泄漏。

查看完整回答
反對 回復 2018-09-25
  • 1 回答
  • 0 關注
  • 1047 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號