在網路遊戲伺服器中,有些通知,世界聊天等資訊需要對全服進行廣播,如果每條資訊都立即進行全服連線遍歷和傳送,不是很合適。所以有必要對這個進行優化。

容器:

   我們建立兩個連線的列表。把一個列表稱為未廣播連線列表,另一個稱為已廣播連線列表

   我們建立兩個廣播資訊的列表。一個稱為全域性廣播資訊列表,另一個稱為當前廣播資訊列表

資訊傳送:

   在傳送廣播資訊的地方,我們把資訊直接加入到全域性廣播資訊列表

優化方法:

   1- 廣播資訊觸發邏輯:
      定期檢查全域性廣播資訊列表當前廣播資訊列表,如果全域性列表不空且當前列表為空,則從全域性列表取定量的待廣播資訊,放入當前廣播資訊列表
   2- 廣播資訊傳送邏輯:
      當前廣播資訊列表不為空時,從未廣播連線列表中取數個連線,將當前廣播資訊列表中的資訊從連線上發給客戶端,然後把這些連線加入到已廣播連線列表
      直到未廣播連線列表為空,清空當前廣播資訊列表,交換未廣播連線列表已廣播連線列表

新連線到來:
   根據需要,將他們加入到已廣播連線列表未廣播連線列表。我是推薦加入到已廣播連線列表。防止收到重複的廣播資訊。



這樣優化之後,通過調整一次傳送的廣播資訊的量,和每次廣播的連線個數,就可以有效的降低廣播對伺服器的壓力。