summaryrefslogtreecommitdiff
path: root/src/event
diff options
context:
space:
mode:
Diffstat (limited to 'src/event')
-rw-r--r--src/event/Thread.cxx13
-rw-r--r--src/event/Thread.hxx7
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();