問題タブ [libmosquitto]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - MQTT リスナー (mosquittopp) をスレッドとして作成するときの 100% の CPU 負荷
現在、特定のメッセージが表示されたときに GPIO アクションをトリガーすることになっている Raspberry Pi 用のドアベル アプリケーションに取り組んでいます。
したがって、私はメインクラスを持っていますdoorbell
:
ドアベル.h
ドアベル.cpp
そして、ドアベル クラスから開始されたスレッドを処理する単純なthreadLauncher
クラス:
threadLauncher.h
スレッドランチャー.cpp
最後にmqttClient
、MQTT を処理するクラスがあります。それはmosquittoppに基づいています:
mqttClient.h
mqttClient.cpp
最後に、私のエントリ ポイント:
main.cpp
これが私の問題です:
Raspberry Pi 4 B でアプリケーションを起動すると、4 つの CPU のいずれかで 100% の CPU 負荷がかかり続けます。
launcher.go(std::make_unique<std::thread>(&doorbell::registerMqttListener, this));
コンストラクターで行を削除するとdoorbell.cpp
、すべて正常に機能します。
これはmosquittoppライブラリの誤った動作である可能性がありますか、それともここで何か間違ったことをしていますか?
追加の質問: Visual Studio で IoT デバイスをリモート デバッグするときに、CPU や RAM の使用状況をプロファイルするにはどうすればよいですか?
編集:loop_start()
からの関数mosquittopp
が 100% の CPU 負荷を引き起こしている
ことを確認できるようになりました。これは mosquittopp の問題ですか、それとも間違った方法で使用していますか?