Use the logging queue to buffer logs
This reduces context switches and mutex contention a lot, which reduces
roboRIO CPU usage significantly.
Change-Id: I21c0f7c127df36bf877133c626cff3d56b93b230
diff --git a/aos/common/logging/log_streamer.cc b/aos/common/logging/log_streamer.cc
index f214d99..ab37e02 100644
--- a/aos/common/logging/log_streamer.cc
+++ b/aos/common/logging/log_streamer.cc
@@ -31,13 +31,15 @@
now.sec(), now.nsec());
while (true) {
- const LogMessage *const msg =
- static_cast<const LogMessage *>(queue->ReadMessage(RawQueue::kBlock));
- if (msg == NULL) continue;
+ const LogMessage *const msg = static_cast<const LogMessage *>(
+ queue->ReadMessage(RawQueue::kNonBlock));
+ if (msg == NULL) {
+ ::aos::time::SleepFor(::aos::time::Time::InSeconds(0.1));
+ } else {
+ internal::PrintMessage(stdout, *msg);
- internal::PrintMessage(stdout, *msg);
-
- queue->FreeMessage(msg);
+ queue->FreeMessage(msg);
+ }
}
Cleanup();