diff options
Diffstat (limited to 'src/event')
-rw-r--r-- | src/event/Thread.cxx | 13 | ||||
-rw-r--r-- | src/event/Thread.hxx | 7 |
2 files changed, 17 insertions, 3 deletions
diff --git a/src/event/Thread.cxx b/src/event/Thread.cxx index f7c2b9a0b..d67585788 100644 --- a/src/event/Thread.cxx +++ b/src/event/Thread.cxx @@ -20,6 +20,8 @@ #include "config.h" #include "Thread.hxx" #include "thread/Name.hxx" +#include "thread/Util.hxx" +#include "Log.hxx" void EventThread::Start() @@ -41,7 +43,16 @@ EventThread::Stop() noexcept void EventThread::Run() noexcept { - SetThreadName("io"); + SetThreadName(realtime ? "rtio" : "io"); + + if (realtime) { + try { + SetThreadRealtime(); + } catch (...) { + LogError(std::current_exception(), + "RTIOThread could not get realtime scheduling, continuing anyway"); + } + } event_loop.Run(); } diff --git a/src/event/Thread.hxx b/src/event/Thread.hxx index b9d2d72b5..cbc773627 100644 --- a/src/event/Thread.hxx +++ b/src/event/Thread.hxx @@ -32,9 +32,12 @@ class EventThread final { Thread thread; + const bool realtime; + public: - EventThread() - :event_loop(ThreadId::Null()), thread(BIND_THIS_METHOD(Run)) {} + explicit EventThread(bool _realtime=false) + :event_loop(ThreadId::Null()), thread(BIND_THIS_METHOD(Run)), + realtime(_realtime) {} ~EventThread() noexcept { Stop(); |