Ich habe viele C-Programme für Mikrocontroller geschrieben, aber nie eine, die auf einem Betriebssystem wie Linux läuft. Wie entscheidet Linux, wie viel Bearbeitungszeit meine Bewerbung benötigt? Gibt es etwas, was ich tun muss, wenn ich ungenutzte Zeit habe, dem Betriebssystem zu sagen, etwas anderes zu tun und später zu mir zurück zu kommen, damit andere Prozesse auch Zeit zum Laufen bekommen? Oder macht das OS das einfach automatisch?Was sollte das C-Programm im Leerlauf tun, wenn es unter Linux läuft?
Bearbeiten: Hinzufügen von weiteren Details Mein c-Programm verfügt über einen Taskplaner. Einige Aufgaben werden alle 100 ms ausgeführt, andere alle 50 ms und so weiter. In meiner Hauptprogrammschleife rufe ich ProcessTasks auf, die prüfen, ob irgendwelche Aufgaben bereit sind zu laufen, wenn keine bereit sind, ruft sie eine Leerlauffunktion auf. Die Idle-Funktion macht nichts, aber es ist da, um einen GPIO-Pin umzuschalten und die Leerlaufzeit mit einem Oszilloskop zu überwachen ... oder etwas, wenn ich es möchte. Also sollte ich vielleicht sched_yield() in dieser Leerlauffunktion aufrufen ???
So die anderen Antworten sagen Schlaf zu verwenden (). Soll ich sleep() und sched_yield() aufrufen? wenn ja, in welcher sollte zuerst aufgerufen werden? – PICyourBrain
@PICyourBrain Lesen Sie das Handbuch. Der Ertrag wird Ihren Prozess laufen lassen, wenn nichts anderes zu tun ist, während 'sleep' eindeutig Ihren Prozess warten lässt. – cnicutar
Wenn Sie einen Spinlock implementieren, möchten Sie sleep (0) oder sched_yield() jedes Mal aufrufen, wenn die Sperre nicht ausgeführt werden kann. – Arvid