www.wikidata.de-de.nina.az
Unter Jacketing versteht man die Moglichkeit einen blockierenden Systemaufruf zu umgehen Ein Aufruf heisst blockierend wenn er nicht nur rechnet sondern stattdessen wartet bis irgendein Ereignis eintritt und erst dann weiterarbeitet In einem System ohne Multitasking ist das fatal der Computer ist bis zum Eintreten des Ereignisses nicht benutzbar Aber auch wenn Multitasking unterstutzt wird kann ein blockierender Funktionsaufruf storen Zum Beispiel sollte der Thread der die grafische Oberflache aktuell halt prompt auf Benutzereingaben reagieren Viele Systemaufrufe die auf externe Gerate zugreifen sind blockierend Inhaltsverzeichnis 1 Vorgehen bei Funktionen ohne Ruckgabewert 1 1 Beispiel in Smalltalk 2 Vorgehen bei Funktionen mit Ruckgabewert 2 1 BeispielVorgehen bei Funktionen ohne Ruckgabewert BearbeitenLiefert der blockierende Systemaufruf keinen Ruckgabewert kann man den Aufruf in einen neuen Thread verschieben den aufrufenden Thread aber gleichzeitig weiterlaufen lassen Beispiel in Smalltalk Bearbeiten Als Klassenmethode von Object unblock selector Macht den blockierenden Aufruf selector unblockierend bs bs blocking selector asSymbol Der alte Aufruf wird umbenannt self addSelector bs withMethod self methodAt selector removeSelector selector self addSelector selector withMethod self class compile self self standardMethodHeaderFor bs fork Durch den Aufruf Test unblock tuWas wurde die Methode tuWas Transcript show Yippie durch die zwei Methoden blockingtuWas Transcript show Yippie und tuWas self blockingtuWas fork ersetzt Der Aufruf tuWas wurde nun in wenigen Millisekunden abschliessen allerdings kame die Ausgabe auf dem Transcript erst etwas spater Vorgehen bei Funktionen mit Ruckgabewert BearbeitenSoll eine blockierende Routine aus einem Thread aufgerufen werden in dem auch das Ergebnis benotigt wird aber nicht notwendig sofort verwendet man wieder obige Vorgehensweise andert aber die blockierende Routine sodass sie Bescheid gibt sobald sie abgearbeitet wurde Die Kommunikation zwischen zwei Prozessen kann durch einen Semaphor geschehen Der aufrufende Thread lauscht regelmassig am Semaphor ob eine Antwort vorliegt Falls ja lasst er sie sich geben und verwendet sie Falls nein rechnet er unbehelligt weiter Beispiel Bearbeiten Sei tuWas also ein blockierender Aufruf der nach einer gewissen Zeit ein Ergebnis e zuruckliefert Bis das zur Verfugung steht soll regelmassig self tuWasAnderesInDerZwischenzeit ausgefuhrt werden e s s Semaphore new e self tuWas s signal fork self tuWasAnderesInDerZwischenzeit doWhileFalse s isSignaled Hier steht e zur Verfugung Abgerufen von https de wikipedia org w index php title Jacketing amp oldid 142259285