

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# backoffAlgorithm 程式庫
<a name="backoffalgorithm-library"></a>

**注意**  <a name="out-of-date-message"></a>
此頁面上的內容可能不是up-to-date。如需最新更新，請參閱 [FreeRTOS.org 程式庫頁面。](https://www.freertos.org/Documentation/03-Libraries/01-Library-overview/01-All-libraries)

## 簡介
<a name="freertos-boa-introduction"></a>

[backoffAlgorithm](https://github.com/FreeRTOS/backoffAlgorithm) 程式庫是公用程式程式庫，用於隔開相同資料區塊的重複重新傳輸，以避免網路擁塞。此程式庫會使用[指數退避與抖動演算法，計算重試網路操作的退避期 ](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/)（例如與伺服器的網路連線失敗）。

具有抖動的指數退避通常在重試失敗的連線或網路請求到伺服器時，由伺服器的網路擁塞或高負載造成。它用於分散多個裝置同時嘗試網路連線所建立重試請求的時間。在連線能力不佳的環境中，用戶端可以隨時中斷連線；因此退避策略也有助於用戶端在不太可能成功時不重複嘗試重新連線，以節省電池。

程式庫是以 C 撰寫，且設計為符合 [ISO C90](https://en.wikipedia.org/wiki/ANSI_C#C90) 和 [MISRA C：2012](https://misra.org.uk/product/misra-c2012-third-edition-first-revision/)。程式庫對標準 C 程式庫以外的任何其他程式庫沒有相依性，也沒有堆積配置，使其適合 IoT 微控制器，但也可完全可攜式至其他平台。

此程式庫可以自由使用，並根據 [MIT 開放原始碼授權](https://freertos.org/a00114.html)進行分發。


****  

| backoffAlgorithm 的程式碼大小 （使用 GCC for ARM Cortex-M 產生的範例） | 檔案 | 使用 -O1 最佳化 | 使用 -Os 最佳化 | 
| --- | --- | --- | --- | 
| backoff\$1algorithm.c | 0.1K | 0.1K | 
| 預估總數 | 0.1K | 0.1K | 