

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

# coreMQTT Agent 程式庫
<a name="coremqtt-agent"></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="coremqtt-agent-introduction"></a>

coreMQTT Agent 程式庫是高階 API，可將執行緒安全性新增至 [coreMQTT 程式庫](coremqtt.md)。它可讓您建立專用 MQTT 代理程式任務，在背景中管理 MQTT 連線，且不需要其他任務的任何介入。程式庫提供與 coreMQTT APIs相當的安全執行緒，因此可用於多執行緒環境。

MQTT 代理程式是獨立的任務 （或執行緒）。它透過成為唯一允許存取 MQTT 程式庫 API 的任務來實現執行緒安全性。它透過將所有 MQTT API 呼叫隔離到單一任務來序列化存取，並消除對旗號或任何其他同步基本概念的需求。

程式庫使用執行緒安全傳訊佇列 （或其他程序間通訊機制） 來序列化所有呼叫 MQTT APIs請求。訊息實作會透過訊息界面從程式庫解耦，讓程式庫能夠移植到其他作業系統。訊息界面是由傳送和接收代理程式命令結構指標的函數組成，以及配置這些命令物件的函數，這可讓應用程式寫入器決定適合其應用程式的記憶體配置策略。

程式庫是以 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/)。除了 [coreMQTT 程式庫](coremqtt.md)和標準 C 程式庫之外，程式庫沒有任何其他程式庫的相依性。程式庫[有](https://www.cprover.org/cbmc/)證據顯示安全記憶體使用和無堆積配置，因此可用於 IoT 微控制器，但也可完全可攜式至其他平台。

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


****  

| coreMQTT Agent 的程式碼大小 （使用 GCC for ARM Cortex-M 產生的範例） | 檔案 | 使用 -O1 最佳化 | 使用 -Os 最佳化 | 
| --- | --- | --- | --- | 
| core\$1mqtt\$1agent.c | 1.7K | 1.5K | 
| core\$1mqtt\$1agent\$1command\$1functions.c | 0.3K | 0.2K | 
| core\$1mqtt.c (coreMQTT) | 4.0K | 3.4K | 
| core\$1mqtt\$1state.c (coreMQTT) | 1.7K | 1.3K | 
| core\$1mqtt\$1serializer.c (coreMQTT) | 2.8K | 2.2K | 
| 預估總數 | 10.5K | 8.6K | 