Realtime_tools Realtimepublisher trylock () часто выходит из строя в однопользовом скромном узле Ros2C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Realtime_tools Realtimepublisher trylock () часто выходит из строя в однопользовом скромном узле Ros2

Сообщение Anonymous »

Я использую realtime_tools в Ros2 Humble, я создал несколько Realtimepublisher s, и я называю их последовательно в потоке, используя следующий код:

Код: Выделить всё

std::thread = ([&publishers_]() {
usleep(1 * 1000);
for (auto publisher : publishers_) {
if (publisher->trylock()) {
publisher->msg_ = msg;
publisher->unlockAndPublish();
} else {
RCLCPP_INFO(m_node_->get_logger(), "Publish failed");
}
}
});
Поток работает с частотой приблизительно 1000 Гц, и программа часто печатает «Опубликовать неудачу», что означает, что большое количество вызовов Trylock () возвращает сбой, но у меня есть только один поток, использующий эти издатели.

Код: Выделить всё

trylock()
возвращает успех вместо неудачи

Подробнее здесь: https://stackoverflow.com/questions/796 ... e-threaded
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»