問題タブ [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.

0 投票する
1 に答える
38 参照

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ライブラリの誤った動作である可能性がありますか、それともここで何か間違ったことをしていますか?

編集:ここにhtop出力があります: HTOP出力

追加の質問: Visual Studio で IoT デバイスをリモート デバッグするときに、CPU や RAM の使用状況をプロファイルするにはどうすればよいですか?

編集:loop_start()からの関数mosquittoppが 100% の CPU 負荷を引き起こしている ことを確認できるようになりました。これは mosquittopp の問題ですか、それとも間違った方法で使用していますか?