Ok, ich schreib das jetzt mal ganz langsam, weil du das ja offensichtlich etwas schwierig verstehst und darum ganz langsam lesen musst:Alfons Mittelmeyer hat geschrieben: Und was willst Du mit Deinem Code Ausschnitt sagen:
...
Dass es abhängig von Compilerflags ist, welches Scheduling verwendet wird? Ja, wie der Compiler aufgerufen wird, steht wohl nicht im C-Code. Da müßtest Du schon auf das Makefile verweisen.
Das, lieber Alfons, ist ein Python Modul mit dem Namen "posix". Wenn das Betriebssytem SCHED_FIFO kennt, dann hat auch dieses Modul eine Konstante mit gleichem Namen. Damit *kann* man dann einen Aufruf machen, der die Thread-Prioritaet auf SCHED_FIFO setzt.
Aber nur weil diese Konstante im Code definiert wird heisst das noch lange nicht, dass sie auch benutzt wird! Es wird ja auch zB die Funktion shutil.rmtree definiert, mit der man sich seine gaaaaanze Festplatte loeschen koennte. Beim Start von Python. Tut man aber nicht, weil es niemand aufruft.
Und das gleiche gilt fuer SCHED_FIFO (bzw sched_param, das es benutzt) - es wird nirgendwo aufgerufen! Ausser in einem Test.
Langer Rede, kurzer Sinn: Es. Wird. Nicht. Aufgerufen. Und. Man. Muesste. ROOT. Sein. Damit. Es. Klappt. Was. Man. Aber. Ueblicherweise. Nicht. Ist.
Klar geworden? "Kapiert", wie du so schoen immer fragst?
Nochmal sehr langsam: auch bei deinem urspruenglichen Programm mit busy-waits OHNE sleep oder einem anderen Call kam der GUI-Thread "dran". Kannst ja mal ein print in poll_queue stopfen. Wird schoen regelmaessig aufgerufen. Das duerfte es laut deiner abstrusen Idee nicht.Alfons Mittelmeyer hat geschrieben: Es ist doch völlig egal mit was Du wartest, ob mit sleep oder etwas anderem. Hauptsache Du wartest mit etwas, anstatt mit Endlosschleife zu laufen, dann kommen nämlich auch die anderen Threads dran.