PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pthread priorität hochsetzen



Sion
18-05-2002, 20:06
Hallo,

ich versuche vergeblich die Priorität eines pthreads hochzusetzen, was aber bislang noch nicht so recht funktionieren will.
Ich versuche dies mit folgender Funktion:

void Thread_increase_priority()
{
struct sched_param my_param;
int my_policy, res;
pthread_getschedparam(pthread_self(), &my_policy, &my_param);
my_param.sched_priority+=1;
res=pthread_setschedparam(pthread_self(), my_policy, &my_param);
// res ist hier == EINVAL
}

Das Ergebnis ist, daß pthread_setschedparam EINVAL zurückliefert. Wenn ich my_param.sched_priority auf 0 setze oder unangetastet lasse, klappt der Funktionsaufruf (res==0).

Hat jemand einen Tipp, wie ich das hinbekomme?
Kann es sein, daß ich zuerst die policy ändern muß?
Wo gibt es im Web gute Doku dazu, ich konnte bislang nichts vernünftiges finden.

Danke, Sion

peschmae
21-05-2002, 11:55
auf den ersten Blick stellt sich mal die Frage, ob
du überhaupt root rechte hast, denn nur als root kannst du die priorität überhaupt erhöhen

MFG Peschmä

Sion
21-05-2002, 21:05
Original geschrieben von peschmae
auf den ersten Blick stellt sich mal die Frage, ob
du überhaupt root rechte hast, denn nur als root kannst du die priorität überhaupt erhöhen

MFG Peschmä

root-Rechte habe ich. Testweise habe ich die policy=SCHED_FIFO gesetzt, das fand Linux garnicht witzig und ist abgeschmiert :( Hätte wohl vorher ein paar sleep's einbauen sollen...
Ich will eine Lösung die möglichst ohne root-Rechte läuft, und bei der ein Thread den anderen des Programms bevorzugt wird. Ob jetzt dieser eine höhere Priorität als Standard bekommt oder die anderen niedrigere ist mir im Prinzip egal. Es wäre halt einfacher, nur diesem einen Thread höhere Priorität zu geben.

Sion

Poseidonius
30-11-2004, 09:35
Hallo zusammen,
habe ich das richtig verstanden, um die Prioritäten eines Threads ändern zu können muss ich mich im root Modus befinden? Dazu öffne ich einfache eine Konsole und tippe su root nebst Passwort ein? Würde mir die entsprechende Funktion für die Prioritäten einen Fehlerwert zurückgeben, wenn ich darauf verzichte?

Danke für eure Hilfe

anda_skoa
02-12-2004, 13:05
Hallo zusammen,
habe ich das richtig verstanden, um die Prioritäten eines Threads ändern zu können muss ich mich im root Modus befinden?

Nein, um sie zur erhöhen.

Wenn du innerhalb deiner Applikation ein bestimmten Thread wichtiger ist, als die anderen, kannst du auch als normaler User die anderen Threads mit weniger Priorität ausstatten, was den selben Effekt haben dürfte.



Würde mir die entsprechende Funktion für die Prioritäten einen Fehlerwert zurückgeben, wenn ich darauf verzichte?


Vermutlich.

Ciao,
_