

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# backoffAlgorithm 库
<a name="backoffalgorithm-library"></a>

**注意**  <a name="out-of-date-message"></a>
此页面上的内容可能不是最新的。有关最新更新，请参阅 [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 | 