Premt RT unter Linux
-
Hallo,
Ich habe folgende Frage:
Ich möchte meine Threads mit unterschiedlichen Prioritäten versehen damit der RT-Kernel weiß welcher Thread entsprechend höherprioritär ist.Dazu habe ich folgenden Code:
struct sched_param param; [...] pthread_t client_thread; pthread_t save_thread; param.sched_priority = 99;//"RT-Level" Max Priorität pthread_create (&client_thread, NULL, subscriber, (void*)&context);//erstelle Client pthread_setschedparam(client_thread, SCHED_OTHER, ¶m); //setze Priorität des Client-Threads param.sched_priority = 50;//"RT-Level" kleinere Priorität pthread_setschedparam(save_thread, SCHED_OTHER, ¶m); //setze Priorität des Save-Threads pthread_create (&save_thread,NULL,save, (void*)&context);//erstelle Save-Thread pthread_join (client_thread, NULL); pthread_join (save_thread,NULL); [...]
Mein Problem: es steht nirgends geschrieben ob ich die Priorität vor erstellen des Threads einstellen muss (siehe Client Thread) oder erst nach dem erstellen des Threads (siehe Save-Thread).
Der Compiler frisst dummerweise beide Varianten ... Kann mir das jemand sagen ?Grüße
-
dem compiler ist an der stelle die reihenfolge egal. Sollange die syntax passt.
Ich denke das du die priorität über "pthread_setschedparam" erst nach dem erstellen des threads machen kannst denn vorher enthält zb. die save_thread variable keine gültige informationen über einen thread.Du kannst aber beim erstellen des threads diese information auch übergeben siehe man pthread_attr_init