Michael Andres wrote:
> On 16 mayo, 10:01, Stefan Reuther <
stefan.n...@arcor.de> wrote:
>>>Betriebssystemunterstützung für Bedingungsvariablen:
>>>- pthreads
>>>- Windows ab Vista
>>>Gibt es noch mehr?
>>
>>"Windows ab Vista" ist schon mal kein Argument *für* Bedingungs-
>>variablen, solange es ältere Windowse noch in Stückzahlen gibt. Außerdem
>>ist es da eine Userland-Implementierung, funktioniert also nicht über
>>Prozessgrenzen hinweg wie ein Mutex oder Semaphore.
>>
>>Die Embedded-Randgruppen-Betriebssysteme, mit denen ich in letzter Zeit
>>gearbeitet habe (INTEGRITY, SYSBIOS) haben ebenfalls Mutex und Semaphore
>>als Kernelobjekt und Bedingungsvariablen, wenn überhaupt, im Userland.
>>Zugegeben, die Compiler dafür sind mit Ach und Krach C++98-fähig,
>>niemand wird dort eine C++11-Bibliothek fordern; andererseits macht es
>>den Umstieg auf C++11 natürlich nicht leichter, wenn man dazu erstmal
>>das Betriebssystem umbauen muss.
>
> Man muss es ja nicht umbauen. Die C++11-Emulation läuft ja auch so.
> Nur eben langsamer als sie könnte.
Das ist immer noch kein gutes Argument, speziell da die genannten
Betriebssysteme unter anderem damit werben, wie gering die Reaktions-
zeit auf eine gelupfte Semaphore ist.
> Ich finde, Präsenz auf Betriebssystemen darf kein Killer-Argument für
> oder gegen neue Features sein, denn die Betriebssystemhersteller
> können nicht alle Entwicklungen in Programmiersprachen antizipieren.
Es war lange genug ein Argument dafür, dass C++ immer noch kein
opendir/readdir-Äquivalent oder gar Netzwerk enthält, obwohl sich da
sogar die Embedded-Hersteller Mühe geben, sowas auf Systemen, die es
eigentlich nicht können, im Debugger zu simulieren.
> Die Verbreitung von C++ ist groß genug, um auch einen Einfluss auf
> Betriebssystementwicklungen nehmen zu können, insbesondere, wenn der
> betreffende Betriebssystemhersteller auch Compiler baut.
Eine Semaphore-aus-Condition-Variablen braucht aber in jedem Fall für
das Lupfen der Semaphore ("sem_post") eine Warteoperation. Das ist,
finde ich, für Echtzeitanwendungen unbrauchbar. Damit holt man sich
allerlei Prioritätsinversionen ins Haus und Dinge wie "aus dem Interrupt
eine Semaphore freigeben" (oder, etwas ziviler, "aus einem Signal-
Handler...") kann man auch vergessen.
Insofern kann ich nur für mich festhalten, dass ich auch weiterhin
eigene Portabilitäts-Layer brauchen werde, und das finde ich doch recht
schade.
Stefan