輪詢演算法設計及其代碼架構,輪詢演算法架構

來源:互聯網
上載者:User

輪詢演算法設計及其代碼架構,輪詢演算法架構

在實際的軟體開發項目中,經常會遇到某模組需要向其它模組發訊息的情況。為了減輕訊息接收者的負擔,我們會採用一種叫做輪詢的機制來發送訊息。本文介紹輪詢演算法的流程及其代碼架構。

1.演算法流程
假設訊息發送模組為模組A,訊息接收模組為模組B。模組A安裝了一個,模組B安裝了N個。所有模組都同時啟動。
演算法流程1所示:

圖1 輪詢演算法流程

2.代碼架構

static int g_iSendIdx = 0;for (iLoopFlag = 0; iLoopFlag < N; iLoopFlag ++)    // N為模組B的安裝個數{    // 構造發往模組B的訊息    // 將訊息發到模組B    if (訊息發送成功)    {        g_iSendIdx = (g_iSendIdx + 1) % N;    // 記錄下次發送到哪個模組B        break;    }    else     // 訊息發送失敗    {        g_iSendIdx = (g_iSendIdx + 1) % N;    // 記錄下次發送到哪個模組B    }}if (iLoopFlag >= N){    // 發送失敗, 不進行後續處理}// 繼續處理下面的流程

對於輪詢演算法,大家需要注意的是:
(1) 該演算法是為瞭解決訊息接收者負荷過重的問題而提出的,如果訊息量不大,可以直接採用一對一的模式。
(2) 對於訊息發送成功的情況,一定要記錄下次訊息發送模組的標誌。即如果當前向第一個模組B發訊息成功,那麼下次應該將訊息發往第二個模組B。如此不斷迴圈。

本人公眾號:zhouzxi,請掃描以下二維碼:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.