ROS は、複数のトピックを同時にパブリッシュおよびサブスクライブするノードを実装します (C++ バージョン)

  ノード上で複数のトピックを同時にパブリッシュおよびサブスクライブする場合は、マルチスレッド メカニズムを使用する必要があります。C++ でマルチスレッドを使用する方法と、C++ でマルチスレッド テンプレートを開く方法が紹介されています。それは次のとおりです。

#include<thread>

void listenThread() {
    
    
	// 线程1内容
}

void sendThread() {
    
    
	// 线程2内容
}

int main() {
    
     
    std::thread sendThreadObj(sendThread);
    std::thread listenThreadObj(listenThread);
    listenThreadObj.join();
    sendThreadObj.join();
    return 0;
}

  ただし、注意すべき点は、ノードの作成にはメイン スレッドが関与することです。パブリッシュとサブスクライブを同時に行う場合は、メイン スレッドを使用できません (つまり、メイン スレッドでパブリッシュとサブスクライブを行ってから、ノードを作成することはできません)。別の機能を実行するために新しいスレッドを作成します) パブリッシュとサブスクライブを同時に行うにはメイン スレッドを使用する必要があります パブリッシュとサブスクライブを操作するには、スレッドの外側に 2 つのスレッドを再作成します (前のスレッドがインターロックされている可能性があるため、いずれにしてもその機能は実現できません)

おすすめ

転載: blog.csdn.net/gls_nuaa/article/details/132571369
おすすめ