

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

# coreMQTT 代理程式程式庫
<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)進行分發。


****  
<a name="coreMQTTAgent-memory-estimate"></a>
<table>
<thead>
  <tr><th colspan="3">coreMQTT Agent 的程式碼大小 （使用 GCC for ARM Cortex-M 產生的範例）</th></tr>
  <tr><th>檔案</th><th>使用 -O1 最佳化</th><th>使用 -Os 最佳化</th></tr>
</thead>
<tbody>
  <tr><td>core\_mqtt\_agent.c</td><td>1.7K</td><td>1.5K</td></tr>
  <tr><td>core\_mqtt\_agent\_command\_functions.c</td><td>0.3K</td><td>0.2K</td></tr>
  <tr><td>core\_mqtt.c (coreMQTT)</td><td>4.0K</td><td>3.4K</td></tr>
  <tr><td>core\_mqtt\_state.c (coreMQTT)</td><td>1.7K</td><td>1.3K</td></tr>
  <tr><td>core\_mqtt\_serializer.c (coreMQTT)</td><td>2.8K</td><td>2.2K</td></tr>
  <tr><td>預估總計</td><td>10.5K</td><td>8.6K</td></tr>
</tbody>
</table>
