Jacketing

Jacketing

Unter Jacketing versteht man die Möglichkeit, einen blockierenden Systemaufruf zu umgehen.

Ein Aufruf heißt 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 unterstützt wird, kann ein blockierender Funktionsaufruf stören. Zum Beispiel sollte der Thread, der die graphische Oberfläche aktuell hält, prompt auf Benutzereingaben reagieren.

Viele Systemaufrufe, die auf externe Geräte zugreifen, sind blockierend.

Inhaltsverzeichnis

Vorgehen bei Funktionen ohne Rückgabewert

Liefert der blockierende Systemaufruf keinen Rückgabewert, kann man den Aufruf in einen neuen Thread verschieben, den aufrufenden Thread aber gleichzeitig weiterlaufen lassen.

Beispiel in Smalltalk

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 würde die Methode

 tuWas
       Transcript show: 'Yippie!'

durch die zwei Methoden

 blockingtuWas
       Transcript show: 'Yippie!'

und

 tuWas
     [self blockingtuWas] fork

ersetzt.

Der Aufruf tuWas würde nun in wenigen Millisekunden abschließen, allerdings käme die Ausgabe auf dem Transcript erst etwas später.

Vorgehen bei Funktionen mit Rückgabewert

Soll eine blockierende Routine aus einem Thread aufgerufen werden, in dem auch das Ergebnis benötigt wird, aber nicht notwendig sofort, verwendet man wieder obige Vorgehensweise, ändert 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 regelmäßig am Semaphor, ob eine Antwort vorliegt. Falls ja, lässt er sie sich geben und verwendet sie. Falls nein, rechnet er unbehelligt weiter.

Beispiel

Sei tuWas also ein blockierender Aufruf, der nach einer gewissen Zeit ein Ergebnis e zurückliefert. Bis das zur Verfügung steht, soll regelmäßig self tuWasAnderesInDerZwischenzeit ausgeführt werden

 |e s|
 s := Semaphore new.
 [e := self tuWas. s signal] fork.
 [self tuWasAnderesInDerZwischenzeit] doWhileFalse: [s isSignaled].
 "Hier steht e zur Verfügung"

Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Jacketing — Jack et*ing, n. The material of a jacket; as, nonconducting jacketing. [1913 Webster] …   The Collaborative International Dictionary of English

  • jacketing — noun ( s) 1. a. : fabric used for jackets b. : jacket 3a, 3b 2. : beating gave him an awful jacketing …   Useful english dictionary

  • Jacketing — Заполнение джеккетов (копиями фильмов); вставка в джеккеты (напр. отрезков копий микрофильмов) …   Краткий толковый словарь по полиграфии

  • jacketing — jack·et || dʒækɪt n. short coat, blazer; outer covering, casing; potato skin; cover of a book; strong folder for holding documents or papers; cover to insulate a boiler; casing for a floppy disk (Computers); outer casing of bullet;… …   English contemporary dictionary

  • Wire — For other uses, see Wire (disambiguation). Wires overhead A wire is a single, usually cylindrical, flexible strand or rod of metal. Wires are used to bear mechanical loads and to carry electricity and telecommunications signals. Wire is commonly… …   Wikipedia

  • Plastics extrusion — Cross section of a plastic extruder to show the screw Plastics extrusion is a high volume manufacturing process in which raw plastic material is melted and formed into a continuous profile. Extrusion produces items such as pipe/tubing, weather… …   Wikipedia

  • Cable — For other uses, see Cable (disambiguation). 6 inch (15 cm) outside diameter, oil cooled cables, traversing the Grand Coulee Dam throughout. An example of a heavy cable for power transmission …   Wikipedia

  • BMC E-Series engine — The BMC E Series was a straight 4 and straight 6 overhead camshaft automobile engine. It displaced 1.5 litres or 1.8 litres in 4 cylinder and 2.2 litres and 2.6 litres as a 6 cylinder. The UK market did not use the 2.6 litre version, vehicles… …   Wikipedia

  • Cartridge (firearms) — From left: .50 BMG, .300 Win Mag, .308 Winchester, 7.62×39mm, 5.56×45mm NATO, .22LR. A cartridge, also called a round, packages the bullet, gunpowder and primer into a single metallic case precisely made to fit the firing chamber of a firearm …   Wikipedia

  • Expanding bullet — Dumdum redirects here. For other uses, see Dum Dums (disambiguation). Dum dum bullet redirects here. For other uses, see Dum Dum Bullet (Album). For the city near Kolkata, India, see Dum Dum. Drawings from 1870 of a hollow point express rifle… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”