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, &param); //setze Priorität des Client-Threads
    	param.sched_priority = 50;//"RT-Level" kleinere Priorität
    	pthread_setschedparam(save_thread, SCHED_OTHER, &param); //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


Anmelden zum Antworten