Muss man "yield" bei der Thread Programmierung mit "abtreten" übersetzen?
-
Kellerautomat schrieb:
Wenn yield nichts tut, hat man gegen einen Busy-Wait genau gar nichts getan.
Es tut ja nicht "nichts", man sagt dem OS "hey, wär ein guter Zeitpunkt mal die anderen ranzulassen, ich muss eh nur warten". Jetzt kommen andere Prozesse zum Laufen und du verbrätst nicht deren Zeit auch noch.
MfG SideWinder
-
Dass andere Prozesse drankommen, ist aber nicht garantiert. Das OS kann auch einfach gar nichts machen und den Thread weiterhin ausfuehren.
-
Kellerautomat schrieb:
Dass andere Prozesse drankommen, ist aber nicht garantiert. Das OS kann auch einfach gar nichts machen und den Thread weiterhin ausfuehren.
Es ist nur deshalb nicht garantiert, weil es evtl. ja gar keine anderen Prozesse gibt die etwas tun wollen. Das Betriebssystem nimmt dein yield() schon ernst, keine Sorge, es weiß schon was es tut.
Aber nur weil es *evtl* mal auch nichts tut, kannst du doch nicht sagen yield() würde generell nichts bringen?!
BTW: Busy wait ist auch mit yield() natürlich nur für die Einsatzzwecke geeignet wo dies in der Literatur erwähnt wird, es macht natürlich auch weiterhin keinen Sinn in user-level Code mit BusyWait auf User-Input zu warten...
MfG SideWinder
-
@Kellerautomat
Kannst du eigentlich auch noch was anderes sagen? Versuchst du überhaupt zu verstehen was wir dir schreiben?Angenommen du hast nen Busy-Wait Loop. Und angenommen das lässt sich nicht vermeiden.
Was ist dann wohl schlauer:
A) Ein Yield() einbauen, und dem OS damit die Möglichkeit geben das ganze etwas zu entschärfen
oder
Nix machen, weil ja sowieso nicht garantiert ist dass das OS überhaupt was tut?Wobei man es mMn. durchaus als garantiert ansehen kann dass das OS was tut. Nur dass nicht definiert ist was genau gemacht wird. Was auch gut so ist, weil das OS/Framework/... dadurch die Möglichkeit hat hier in Zukunft diverse Verbesserungen zu machen.
Was ist daran jetzt so schwer zu verstehen?
-
guckt doch mal in die java 7 dokumentation:
yield muss nicht zwingend vom Scheduler beachtet werden
yield kann benutzt werden um zB busyWaits cpu nutzung zu entschärfen aber man sollte es nur benutzen wenn entsprechende Messungen positiv ausfallen
und das wichtigste yield braucht man meist nicht
-
Kann das mal bitte jemand nach Java schieben, da es nur um das yield in Java geht. Ich muss autmatisch an Coroutinien, kooperatives Multitasking, MS-DOS, etc. denken, aber nicht an Java.
-
@gary1195
Ja, schön.
Trotzdem ist die Funktion nicht sinnlos.
-
hustbaer schrieb:
@gary1195
Ja, schön.
Trotzdem ist die Funktion nicht sinnlos.Das habe ich nicht behauptet!
-
@gary1195
Dann entzieht sich mir der Sinn deines Beitrags
-
Dieser Thread wurde von Moderator/in SideWinder aus dem Forum Rund um die Programmierung in das Forum Java verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.