Boost library – Thread Priority

Ich arbeite zur Zeit an einem Simulink-Model, welches als Echtzeittarget Linux verwendet. Dabei wird in einem meiner eigenen Simulink-Blöcke ein Thread geöffnet, welcher ebenfalls mit Echtzeit laufen sollte. Hierbei verwende ich die Boost-Library.

Ich selber fand die Dokumentation von Boost bezüglich Änderung der Priorität von Threads nicht besonders gut, habe aber nach weiterer Suche endlich den richtigen Weg gefunden gefunden.
Knack Punkt war hierbei daThread.native_handle(), welches Zugriff auf den unterliegende pthread liefert.


int policy;
pthread_t threadID = (pthread_t) daThread.native_handle();
struct sched_param param;
policy = SCHED_FIFO;
param.sched_priority = sched_get_priority_max(SCHED_FIFO);
pthread_setschedparam(threadID, policy, &param)

Dieser Code-Schnippsel lässt den den Thread daThread mit höchster Priorität in Echtzeit laufen. Aufgrund dieser Priorität sind root-Rechte beim Starten des Programmes erforderlich.

Hinterlasse eine Antwort

Deine Email-Adresse wird niemals veröffentlicht. Pflichtfelder sind mit * gekennzeichnet.