/ / Setze "schönes Level" aus dem Erstellerthread? - C ++, Linux, Pthreads, Zeitplanung

Setze den "netten Level" des Threads aus dem Ersteller-Thread? - C ++, Linux, Pthreads, Planung

Ich arbeite an Thread-Prioritäten in meiner Anwendung. Es ist ein Echtzeit-Thread mit geplant SCHED_RR. ich benutze pthread_setschedparam diese Politik und die Priorität dafür festzulegen. pthread_setschedparam übernimmt die Thread-ID als erstes Argument, also nach dem Erstellen eines Threads mit boost::thread Ich kann seine Echtzeitpriorität einstellen.

Ein anderer Thread sollte jedoch ein bestimmtes Level haben, aber keine Echtzeitplanung. ich kann nutzen

pid_t tid;
tid = syscall(SYS_gettid);
int ret = setpriority(PRIO_PROCESS, tid, nicelevel);

um sein schönes Niveau auf zu setzen ǹicelevelDies funktioniert jedoch nur, wenn ich die Thread-Funktion so modifiziere, dass sie die darüber liegenden Zeilen enthält. Gibt es eine Möglichkeit, das nette Niveau von der Methode festzulegen, die den Thread erstellt?

Vielen Dank!

Antworten:

0 für die Antwort № 1

Das boost :: thread Klasse macht ein Publikum frei native_handle() Methode. In einer pthreads-basierten Implementierung diese Methode Macht zurückgeben tid (es auch Macht zurückgeben pthread_t *abhängig von der Bedeutung von handle in diesem besonderen Fall).

Wenn es tatsächlich einen zurückgibt tidWenn Sie es verwenden, sollte Ihr Problem gelöst sein. Andernfalls müssen Sie wahrscheinlich den von übergebenen Wert weiterleiten gettid() von der Thread-Funktion zum globalen Gültigkeitsbereich, wie diese Antwort schlägt vor.