DE60004886T2 - System und verfahren zum bereitstellen einer sammlung von wiederverwendbaren fäden zum behandeln von gepufferten aufgaben - Google Patents

System und verfahren zum bereitstellen einer sammlung von wiederverwendbaren fäden zum behandeln von gepufferten aufgaben Download PDF

Info

Publication number
DE60004886T2
DE60004886T2 DE60004886T DE60004886T DE60004886T2 DE 60004886 T2 DE60004886 T2 DE 60004886T2 DE 60004886 T DE60004886 T DE 60004886T DE 60004886 T DE60004886 T DE 60004886T DE 60004886 T2 DE60004886 T2 DE 60004886T2
Authority
DE
Germany
Prior art keywords
thread
work queue
state
queue
threads
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE60004886T
Other languages
English (en)
Other versions
DE60004886D1 (de
Inventor
A. James SIEVERT
K. Mark VALLEVAND
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Unisys Corp
Original Assignee
Unisys Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Unisys Corp filed Critical Unisys Corp
Application granted granted Critical
Publication of DE60004886D1 publication Critical patent/DE60004886D1/de
Publication of DE60004886T2 publication Critical patent/DE60004886T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Description

  • ERFINDUNGSGEBIET
  • Die vorliegende Erfindung betrifft allgemein Fäden für eine Computerprogrammausführung und insbesondere die Verwaltung eines Pools von Fäden zur Ausführung von in Schlange eingesetzten Arbeitsgegenständen.
  • HINTERGRUND DER ERFINDUNG
  • Ein Faden wird allgemein als leicht gewichtiger Fluss der Steuerung innerhalb eines Prozesses angesehen, worin ein Prozess einen schwergewichtigen Fluss der Steuerung darstellt. Ein Prozess ist dahingehend schwergewichtig, dass das Betriebssystem einen dezidierten Speicherbereich für den Programmcode und die Daten zuordnet, die vom Prozess verwendete werden, wohingegen ein Faden darin leicht gewichtig ist, dass ein Faden innerhalb des Speicherbereichs eines Prozesses existiert. Einige Prozesse haben mehrere Fäden, so dass mehrere Fäden gleichzeitig innerhalb eines Prozesses ablaufen können.
  • Fäden werden im allgemeinen mit der Unterstützung von einem Betriebssystem erzeugt und für gewöhnlich ausgeführt, indem der Faden mit einem bestimmten Betrieb gekoppelt wird. Das bedeutet, dass ein Faden zum Zweck einer Durchführung eines bestimmten Betriebs erzeugt wird. Nachdem der Betrieb abgeschlossen ist, kann der Faden zerstört oder beim Durchführen desselben Betriebs mit vielleicht anderen Eingabedaten wiederverwendet werden.
  • Das Erzeugen und Initiieren von neuen Fäden kann hinsichtlich des Verbrauchs von Betriebssystemressourcen teuer sein. Jedesmal, wenn ein neuer Faden benötigt wird, muss die Steuerung an das Betriebssystem weitergegeben werden, um den Faden zu erzeugen und irgendwelche für das Verwalten des Fadens erforderlichen Strukturen zu errichten und zu erzeugen. Solchermaßen erzeugen einige Applikationen mehrere Fäden zum Durchführen des selben Betriebs innerhalb eines Prozesses. Jedoch sind die Fäden für die spezifischen Betriebe dezidiert, für die sie erzeugt wurden, was hinsichtlich der Ausnutzung von Ressourcen ineffizient sein kein. Beispielsweise kann eine erste Gruppe von Fäden erzeugt und für eine erste Funktion eines Systems dezidiert sein, und eine zweite Gruppe von Fäden kann erzeugt und für eine zweite Funktion des Systems dezidiert sein. Wenn die Nachfrage für die erste Funktion niedrig ist, d. h. worin nur ein wenige Fäden der ersten Gruppe von Fäden aufgerufen werden, und. die Nachfrage für die zweite Funktion hoch ist, wobei es mehr Nachfrage für die zweite Funktion gibt, als es verfügbare Fäden gibt, dann kann die Leistung des Systems durch die begrenzte für die Durchführung der zweiten Funktion verfügbare Anzahl von Fäden eingeschränkt werden. Mit anderen Worten können die Nachfragen für eine von der zweiten Funktion durchgeführten Arbeit aufgrund der begrenzten mit der zweiten Funktion verknüpften Anzahl von Fäden verzögert werden.
  • Das vorherige Szenarium veranschaulicht eine Situation, worin die Leistung selbst dann verschlechtert werden kann, wenn es eine für das Erfüllen der Nachfrage verfügbare Verarbeitungsfähigkeit geben kann. Spezifisch sind die mit der ersten Funktion verknüpften Fäden im Wartezustand, während die mit der zweiten Funktion verknüpften Fäden vollständig benutzt werden.
  • Ein System zum Verwalten von Fäden wird im U.S.-Patent 5.504.898 von Klein offenbart. Das offenbarte System stellt eine Umgebung mit Fäden bereit, indem Faden-bezogene Stapeljobs verwendet werden, um Fadenaufgaben anzunehmen und sie einzeln den spezialisierten Stapeljobs anzutragen, die die Aufgaben durchführen. Rücksprungdaten werden von den Faden-bezogenen Stapeljobs an einer gemeinsamen Schlange angelegt, und es wird veranlasst, dass die verwendete Applikation an der gemeinsamen Schlange wartet. Obwohl das 5.504.898-Patent ein System offenbart, das in der Lage ist, einen Pool der aktiven Faden-bezogenen Stapeljobs aufrechtzuerhalten, werden diese Jobs nicht auf eine Art und Weise verwaltet, die allen oben erörterten Leistungsaufgaben begegnet.
  • Ein Verfahren und ein System, das den zuvor erwähnten Pro blemen und anderen betreffenden Problemen begegnet, ist daher wünschenswert.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Ein System und ein Verfahren zum Verwalten eines Pools von Fäden wird zum Ausführen von Fadenbetrieben bereitgestellt. Eine Arbeitsschlange wird bereitgestellt, um die gesteuerte Zuweisung von Faden-bezogenen Ressourcen zur Ausführung einer Mehrzahl an Fadenbetrieben zu unterstützen. Ein Faden-Pool wird instantiiert, der eine Mehrzahl von Fäden einschließt, und eine Arbeitsschlange, die Programm-steuerbare Zustände hat, wird instantiiert. Fadenbetriebe werden in die Arbeitsschlange eingereiht, wenn sich die Arbeitsschlange in einem laufenden oder unterbrochenen Zustand befindet, und wenn sich die Arbeitsschlange in einem gestoppten Zustand befindet, werden Anforderungen zum Einreihen in die Schlange von Fadenbetrieben verweigert. In anderen Ausführungsformen können vorübergehende Fäden in den Faden-Pool eingeführt werden, um einem zeitweiligen Bedarf an zusätzlichen Faden-Ressourcen zu begegnen.
  • Es ist nicht beabsichtigt, dass die obige Zusammenfassung der vorliegenden Erfindung jede offenbarte Ausführungsform der vorliegenden Erfindung beschreibt. Die Figuren und die detaillierte Beschreibung, die folgen, stellen zusätzliche beispielhafte Ausführungsformen und Aspekte der vorliegenden Erfindung bereit.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Weitere Aspekte und Vorteile der Erfindung werden bei der Durchsicht der detaillierten Beschreibung und unter Bezugnahme auf die Zeichnungen ersichtlich, in denen:
  • 1 ein Funktionsblockdiagramm eines Systems zum Bereitstellen eines Pools von wiederverwendbaren Fäden ist, damit in Übereinstimmung mit einer Ausführungsform der Erfindung Arbeitsgegenstände durchgeführt werden;
  • 2 ein Zustandsdiagramm ist, das mögliche Zustände des Faden-Pools und Übergänge zwischen den Zuständen zeigt;
  • 3 das Verhältnis zwischen den 3A und 3B zeigt, die zusammen ein Klassendiagramm einer Ausführungsform einer Klassenanordnung zum Bereitstellen wiederverwendbarer Fäden und einer Arbeitsschlange der Fadenbetriebe umfassen;
  • 4 ein Objekt-Interaktionsdiagramm ist, das die Einreihung eines Fadenbetriebs in die Arbeitsschlange darstellt, wenn sich der Faden-Pool in einem laufenden oder unterbrochenen Zustand befindet;
  • 5 ein Objekt-Interaktionsdiagramm ist, das den Übergang des Faden-Pools von einem laufenden zu einem unterbrochenen Zustand darstellt;
  • 6 ein Objekt-Interaktionsdiagramm ist, das den Übergang des Faden-Pools von einem laufenden zu einem gestoppten Zustand darstellt;
  • 7 ein Objekt-Interaktionsdiagramm ist, das den Übergang des Faden-Pools von einem unterbrochenen zu einem laufenden Zustand darstellt;
  • 8 ein Objekt-Interaktionsdiagramm ist, das den Übergang des Faden-Pools von einem unterbrochenen zu einem gestoppten Zustand darstellt;
  • 9 ein Objekt-Interaktionsdiagramm ist, das den Übergang des Faden-Pools von einem gestoppten zu einem unterbrochenen Zustand darstellt;
  • 10 ein Objekt-Interaktionsdiagramm ist, das die Ausführung eines Fadens darstellt, wenn sich der Faden-Pool in einem unterbrochenen Zustand befindet;
  • 11 ein Objekt-Interaktionsdiagramm ist, das die Ausführung eines Fadens darstellt, wenn sich der Faden-Pool in einem laufenden Zustand befindet;
  • 12 ein Objekt-Interaktionsdiagramm ist, das die Ausführung eines Fadens darstellt, wenn sich der Faden-Pool in einem gestoppten Zustand befindet und die Arbeitsschlange nicht leer ist; und
  • 13 ein Objekt-Interaktionsdiagramm ist, das die Ausführung eines Fadens zeigt, wenn sich der Faden-Pool in einem gestoppten Zustand befindet und die Arbeitsschlange leer ist.
  • Obwohl die Erfindung für verschiedene Modifikationen und alternative Formen zugänglich ist, wurden ihre besonderen Aus führungsformen exemplarisch in den Zeichnungen gezeigt und werden detailliert hierin ebenfalls exemplarisch beschrieben werden.
  • DETAILLIERTE BESCHREIBUNG
  • Es wird angenommen, dass die vorliegende Erfindung an eine Vielfalt an Systemen anlegbar ist, um Fäden und die von den Fäden durchgeführte Arbeit zu verwalten. Es wurde befunden, dass die vorliegende Erfindung besonders anwendbar und vorteilhaft ist, wenn sie in einer Objekt-orientierten Programmiersprache implementiert wird. Obwohl die vorliegende Erfindung nicht so eingeschränkt ist, wird mithilfe der Klassendefinitionen, die verwendet werden, um die Erfindung zu implementieren, eine Einschätzung der vorliegenden Erfindung gezeigt.
  • 1 ist ein Funktionsblockdiagramm eines Systems zur Bereitstellung eines Pools von wiederverwendbaren Fäden für die Durchführung von Arbeitsgegenständen in Übereinstimmung mit einer Ausführungsform der Erfindung. Das System 10 schließt eine Arbeitsschlange 12, einen Faden-Pool 14, einen Arbeitsschlangen-Controller 16 und einen Faden-Pool-Manager 18 ein. Fadenbetriebe 20 führen Aufrufe für den Arbeitsschlangen-Controller 16 aus, um in der Arbeitsschlange 12 eingereiht zu werden.
  • Die Arbeitsschlange 12 unterstützt ein Verfahren zum Verwalten einzelner Arbeitsgegenstände, die von irgendeinem Faden 22 im Faden-Pool 14 ausgeführt werden können. In einer Ausführungsform sind die in die Schlange eingereihten Arbeitsgegenstände WIN32 API-Aufrufe, die einzeln von Fadenbetrieben 24 umwickelt und dem Windows NT-Betriebssystem-("NT")-E/A-Durchführungsport zur Verfügung gestellt werden.
  • Die Arbeitsschlange 12 kann sich in einem von drei Zuständen befinden: gestoppt, unterbrochen und laufend. Wenn die Arbeitsschlange instantiiert wird, befindet sie sich anfänglich im gestoppten Zustand. Die für die Einreihung in die Arbeitsschlange 12 gesuchten Fadenbetriebe werden abgelehnt, wenn sich die Arbeitsschlange im gestoppten Zustand befindet. Wenn sich die Arbeitsschlange 12 im unterbrochenen Zustand befindet, sind die Fäden 22 im Wartezustand und führen keine Fadenbetriebe 24 durch. Jedoch können neue Fadenbetriebe in der Arbeitsschlange 12 eingereiht werden, wenn sich die Arbeitsschlange im unterbrochenen Zustand befindet. Wenn die Arbeitsschlange 12 läuft, führen Fäden 22 Fadenbetriebe 24 aus, und es können neue Fadenbetriebe die die Schlange eingereiht werden.
  • Der Faden-Pool-Manager 18 instantiiert Fäden 22 im Faden-Pool 14, indem Start-Faden-Anforderungen verwendet werden, die an den Arbeitsschlangen-Controller 16 ausgegeben werden. Fäden 22 sind für die Ausführung der Fadenbetriebe 24 verfügbar. Da die Erzeugung von Fäden hinsichtlich der Betriebssystem-Ressourcen-Erfordernisse teuer ist, stellt ein Pool von Fäden die Fähigkeit bereit, neue Fadenbetriebe auszuführen, ohne auf die Erzeugung eines neuen Fadens warten zu müssen.
  • Der Arbeitsschlangen-Controller 16 sorgt für die Fähigkeit, den Arbeitsfluss (d. h. die Ausführung der Fadenbetriebe 24) eng mit dem Faden-Pool-Manager 18 zu steuern. Der Faden-Pool 14 kann über den Arbeitsschlangen-Controller 16 vom Faden-Pool-Manager 18 z. B. gestartet, gestoppt und unterbrochen werden. Wenn der Faden-Pool 14 gestoppt wird, wird der Arbeitsschlangen-Controller 16 die Fadenbetriebe nicht mehr länger in die Arbeitsschlange 12 einreihen, noch nicht begonnene Fadenbetriebe 24 werden aus der Schlange genommen und nicht ausgeführt, und in Ausführung befindliche Fadenbetriebe dürfen zum Abschluss gebracht werden. Wenn der Faden-Pool 14 unterbrochen wird; wird der Arbeitsschlangen-Controller damit fortfahren, die Fadenbetriebe 20 in der Arbeitsschlange 12 einzureihen, und Fadenbetriebe 24, die noch nicht gestartet sind, werden nicht aus der Schlangen herausgenommen, bis der Faden-Pool-Zustand auf laufend geändert wird.
  • In einer anderen Ausführungsform der Erfindung wird eine Mehrzahl von Instanzen des Systems 10 erzeugt, um mehrere Arbeitsschlangen und Faden-Pools bereitzustellen. Zum Beispiel können verschiedene Applikationen unterschiedliche Ressourcen-Erfordernisse haben. Solchermaßen kann der mit einer Applikation verknüpfte Faden-Pool kleiner sein als der mit einer anderen Applikation verknüpfte.
  • Der Arbeitsschlangen-Controller 16 stellt auch die Fähig keit bereit, um vorübergehend Fäden zum Faden-Pool 14 hinzuzufügen. Dieses Merkmal kann im Zusammenhang mit unabhängigen Arbeitsschlangen und Faden-Pools für verschiedene Applikationen nützlich sein. Wenn z.B. während einer bestimmten Zeitspanne eine erste Applikation einen geringeren Bedarf an der Berechnung von Ressourcen als eine zweite Applikation hat, dann können einigender Fäden in dem mit der ersten Applikation verknüpften Faden-Pool zeitweilig am Faden-Pool der zweiten Applikation angehängt werden. Wenn die Zeitspanne verstrichen ist, können die Fäden vom Faden-Pool der zweiten Applikation entfernt und zum Faden-Pool der ersten Applikation zurückgegeben werden.
  • 2 ist ein Zustandsdiagramm, das mögliche Zustände des Faden-Pools und Übergänge zwischen den Zuständen zeigt. Die Zustände des Faden-Pools 14 sind gestoppt, unterbrochen und laufend. Die Verfahren innerhalb eines jeden der Blöcke sind die Namen der Verfahren, die bewirken, dass die Arbeitsschlange in den verknüpften Zustand übergeht. Die Konvention für diese Diagramme ist, den anfänglichen Zustand als vom Startknoten aus eintretenden zu zeigen.
  • Die Stopp-Schlange- und Wiederaufnahme-Schlange-Verfahren bewirken, dass die Arbeitsschlange in den gestoppten Zustand übergeht, die Unterbreche-Schlange- und das Start-Schlange-Verfahren bewirken, dass die Arbeitsschlange in den unterbrochenen Zustand übergeht, und das Wiederaufnahme-Schlange-Verfahren bewirkt, dass die Arbeitsschlange in den laufenden Zustand übergeht. Wenn sich der Faden-Pool 14 im gestoppten Zustand befindet, bewirkt das Aufrufen des Start-Schlange-Verfahrens, dass der Faden-Pool vom gestoppten Zustand zum unterbrochenen Zustand übergeht. Das Aufrufen von entweder dem Wiederaufnahme-Schlange-Verfahren oder dem Stopp-Schlange-Verfahren, wenn sich der Faden-Pool 14 im unterbrochenen Zustand befindet, bewirkt; dass der Faden-Pool im gestoppten Zustand bleibt.
  • Wenn sich der Faden-Pool 14 im unterbrochenen Zustand befindet, bewirkt das Aufrufen des Stopp-Schlange-Verfahrens den Faden-Pool zum Übergang in den gestoppten Zustand. Das Aufrufen des Wiederaufnahme-Schlange-Verfahren veranlasst den Faden-Pool zum Übergang vom unterbrochenen Zustand zum laufenden Zustand.
  • Der Faden-Pool 14 bleibt im unterbrochenen Zustand, wenn das Unterbreche-Schlange-Verfahren aufgerufen wird, während sich der Faden-Pool gegenwärtig im unterbrochenen Zustand befindet.
  • Wenn sich der Faden-Pool 14 im laufenden Zustand befindet, veranlasst das Aufrufen des Stopp-Schlange-Verfahrens den Faden-Pool zum Übergang in den gestoppten Zustand, und das Aufrufen des Unterbreche-Schlange-Verfahrens veranlasst den Faden-Pool zum Übergang in den unterbrochenen Zustand. Das Aufrufen des Wiederaufnahme-Schlange-Verfahrens, wenn sich der Faden-Pool in den laufenden Zuständen befindet, veranlasst den Faden-Pool zum Bleiben im laufenden Zustand.
  • Die Zustand-Übergangslinien schließen durch Konvention Markierungen ein, die auf die Funktion hinweisen, die den Zustand-Übergang bewirkt, der von Aktionen gefolgt wird, die durchgeführt werden, wenn der Übergang erfolgt. Der Übergang vom unterbrochenen Zustand zum gestoppten Zustand wird z. B. durch die Stopp-Schlange-Funktion veranlasst. Die Änderung im Zustand führt dazu, dass die in Schlangen eingereihten Arbeitsfäden für die Beendigung aus der Schlange freigegeben werden. Weitere Details werden in den Figuren, die folgen, bereitgestellt.
  • 3 zeigt das Verhältnis zwischen den 3A und 3B, die zusammen ein Klassendiagramm einer Ausführungsform einer Klassenanordnung zum Verwalten eines Pools von wiederverwendbaren Fäden und eine Arbeitsschlange der Fadenbetriebe umfassen. Die Figur verwendet eine herkömmliche Objekt-Modellier-Technik(OMT)-Bezeichnung, um die Klassen und Klassenverhältnisse zu bezeichnen.
  • Ein Objekt des Klassen-Arbeitsschlangen-Faden-Pools verwaltet Objekte der Fadenklasse, und Objekte des Klassen-Arbeitsschlangen-Zustand-Controllers erben vom Fadenbetrieb der abstrakten Klasse. Die Fäden und Fadenbetriebsklassen werden in der ebenfalls anhängigen Patentanmeldung detailliert beschrieben.
  • Ein Arbeitsschlangen-Objekt verfügt über ein Arbeitsschlangen-Zustand-Controller-Objekt, das ein Arbeitsschlangen-Faden-Pool-Objekt und ein Arbeitsschlangen-Implementierung-Objekt hat. Die Pfeilspitze auf der Linie, die die Arbeitsschlangen-Klasse mit dem Arbeitsschlangen-Zustand-Controller verkettet, weist darauf hin, dass es sich um eine Ein-Wege-Verkettung handelt. Das bedeutet, dass die Arbeitsschlange auf den Arbeitsschlangen-Zustand-Controller verweisen kann, aber der Controller nicht auf die Arbeitsschlange verweisen kann. Wenn eine Verkettung keine Pfeilspitzen hat (z. B. zwischen dem Arbeitsschlangen-Faden-Pool und dem Arbeitsschlangen-Zustand-Controller), ist sie bidirektional, wobei Objekte auf jeder Seite der Verkettung aufeinander verweisen können.
  • Ein Arbeitsschlangen-Zustand-Controller-Objekt hat Objekte des Arbeitsschlangen-Gestoppt-Zustands, Arbeitsschlangen-Unterbrochen-Zustands und Arbeitsschlangen-Laufend-Zustands. Jedes der verschiedenen Zustand-Objekte erbt vom der Klasse Arbeitsschlangen-Zustand, der von einem Objekt der Arbeitsschlangen-Zustand-Controller-Klasse aufrechterhalten wird.
  • Die Arbeitsschlangen-Zustände-Klasse kapselt die aufgezählten Zustand-Werte von gestoppt, laufend, unterbrochen und unbekannt ein.
  • Die Attribute und Verfahren der unterschiedlichen Klassen werden in den Paragraphen, die folgen, beschrieben.
  • Arbeitsschlangen-Klasse
  • Die Arbeitsschlangen-Klasse sorgt für die Schnittstelle, mittels der die Fadenbetriebe in der Arbeitsschlange 12 eingereiht werden und der Faden-Pool 14 verwaltet wird.
  • Das Anhänge-Faden-Verfahren der Arbeitsschlangen-Klasse kann verwendet werden, um einen Faden zum Faden-Pool 14 hinzuzufügen. Solchermaßen können zu Zeiten, in denen mehr Arbeit durchgeführt werden muss (mittels Fadenbetrieben in der Arbeitsschlange 12), zusätzliche Fäden zum Faden-Pool 14 hinzugefügt werden, indem das Anhänge-Faden-Verfahren verwendet wird. Der Faden bleibt im Faden-Pool 14, bis das Stopp-Schlange-Verfahren durchgeführt wird. Das Stopp-Schlange-Verfahren entleert die Arbeitsschlange 12 von Fadenbetrieben 24, gibt diejenigen Fäden 22 zurück, die mittels der Verwendung des Anhänge-Faden-Verfahrens zum Faden-Pool 14 hinzugefügt wurden, um Punkte außerhalb des Systems 10 zu steuern, und unterbricht diejenigen Fäden 22, die mittels Verwendung des Erzeuge-Fäden-Verfahrens der Arbeitsschlange-Faden-Pool-Klasse erzeugt wurden.
  • Das Start-Schlangen-Verfahren wird verwendet, um den Zustand der Arbeitsschlange 12 vom gestoppten Zustand auf den unterbrochenen Zustand zu ändern.
  • Das Stopp-Schlange-Verfahren wird verwendet, um den Zustand der Arbeitsschlange 12 auf den gestoppten Zustand zu ändern.
  • Das Unterbreche-Schlange-Verfahren wird verwendet, um den Zustand der Arbeitsschlange 12 vom laufenden Zustand auf den unterbrochenen Zustand zu ändern.
  • Das Wiederaufnahme-Schlange-Verfahren wird verwendet, um den Zustand der Arbeitsschlange 12 vom unterbrochenen Zustand auf den laufenden Zustand zu ändern.
  • Das Schlangenarbeitsverfahren wird verwendet, um einen Fadenbetrieb 20 zur Arbeitsschlange 12 hinzuzufügen.
  • Das Hole-Arbeitsschlangen-Zustand-Verfahren gibt den aktuellen Zustand zur Arbeitsschlange 12 zurück.
  • Das Hole-Schlangen-Tiefen-Verfahren gibt die Anzahl der Fadenbetriebe in der Arbeitsschlange 12 zurück, die auf ihre Ausführung warten.
  • Das Wartezustand-Synchronisier-Verfahren fordert das entsprechende Verfahren der Arbeitsschlangen-Zustand-Controller-Klasse zu warten auf, bis die Schlange im aktuellen Zustand im Wartezustand ist. Die Arbeitsschlange ist im Wartezustand; wenn es in der Arbeitsschlange keine eingereihten Fadenbetriebe gibt.
  • Arbeitsschlangen-Faden-Pool-Klasse
  • Die Arbeitsschlangen-Faden-Pool-Klasse schließt Attribute und Verfahren zum Verwalten eines Faden-Pools 14 ein.
  • Max-Fäden sind die im Faden-Pool 14 erlaubte maximale Anzahl von Fäden.
  • Die Anzahl der Fäden ist die im Faden-Pool 14 vorhandene Anzahl von Fäden.
  • Das Faden-Pool-Attribut verweist auf die Objekte der Klasse Faden.
  • Das Fadenbetrieb-Attribut verweist auf den Betrieb, den ein Faden ausführt.
  • Das Faden-Speicher-Manager-Attribut verweist auf den Speicherbereich, in dem die Faden-Objekte zugeordnet werden.
  • Das Zuweise-Verfahren implementiert die Zuweisung von einem Objekt zu einem anderen. Es ist auch als Zuweisungsoperator bekannt. In diesem Fall wird es erklärt, aber nicht bestimmt (keine Code-Implementierung), da die Zuweisung nicht unterstützt wird. Wenn ein Programmierer versuchen würde, ein Objekt einem anderen zuzuordnen, würde der Compiler einen Fehler melden, anstatt den Fehler-Zuweisungsoperator zu verwenden.
  • Das Start-Fäden-Verfahren startet ausdrücklich die Fäden im Pool.
  • Das Warten-Auf-Vollendung-Verfahren wird aufgerufen, um den Aufrufer zu unterbrechen, bis alle Fäden im Pool abgeschlossen sind.
  • Das Erzeuge-Fäden-Verfahren ruft das Betriebssystem dazu auf, die Fäden des Faden-Pools 14 zu erzeugen.
  • Das Zerstöre-Fäden-Verfahren ruft das Betriebssystem auf, die Fäden des Faden-Pools 14 freizugeben.
  • Arbeitsschlangen-Zustand-Controller-Klasse
  • Die Arbeitsschlangen-Zustand-Controller-Klasse schließt Attribute und Verfahren für die Schnittstellenverbindung zwischen der Faden-Pool-Implementierung und der Arbeitsschlangen-Implementierung ein.
  • Der Arbeitsfaden-Zählwert ist die Anzahl der dem Faden-Pool zugeordneten "Arbeiter"-Fäden. Ein "Arbeiter"-Faden ist ein Ausführungsfaden, worin der Begriff Arbeiter-Faden verwendet wird, um Fäden im Pool von anderen Fäden zu unterscheiden.
  • Der Zählwert der angehängten Fäden zählt die Anzahl der Fäden im Faden-Pool 14, die aus dem Anhänge-Faden-Verfahren hervorgeht.
  • Das Kein-Betrieb-Attribut ist ein Betrieb, der keine Arbeit durchführt und der im Windows NT-Betriebssystem-E/A-Durchführungsport eingereiht wird. Kein-Betriebsobjekte, die am E/A-Durchführungsport in die Schlange eingereiht werden, bewirken, dass die Fäden aufwachen, die Tue-Nichts-Betriebe durchführen und ein weiteres in die Schlange eingereihtes Kein-Betrieb- Objekt aus der Schlange auswerfen.
  • Das Betrieb-Hauptverfahren ruft das aus der Arbeitsschlange 12 herausgenommene Fadenbetrieb-Objekt auf.
  • Das Anhänge-Faden-Verfahren erklärt einen C-Faden mit dem aktuellen Objekt initialisiert, inkrementiert den Zählwert der angehängten Fäden und hängt das Faden-Objekt an den aktuellen Faden an. Der aktuelle Faden der Ausführung wird in ein C-Faden-Objekt eingewickelt und eingehüllt, damit es mit einer Objektorientierten Syntax und Semantik verarbeitet wird. Das Faden-Objekt wird dann in den Faden-Pool gefügt, wo es bleibt, bis die Arbeitsschlange gestoppt wird. Wenn der Faden vom Faden-Objekt befreit wird, wird die Steuerung zum Anhänge-Faden-Verfahren zurückgeführt, der Zählwert der angehängten Fäden gesenkt und die Steuerung an das Arbeitsschlange-Verfahren zurückgegeben.
  • Die Verfahren Starte-Schlange, Stopp-Schlange, Unterbreche-Schlange, Wiederaufnehme-Schlange, Schlangen-Arbeit, Hole-Schlangenzustand und Hole-Schlangentiefe werden von den entsprechenden Verfahren der Arbeitsschlangen-Klasse aufgerufen und rufen durch abhängig vom aktuellen Zustand der Arbeitsschlange 12 zu den Verfahren der Arbeitsschlangen-Gestoppt-, -Unterbrochen- und -Laufenden-Zustand-Klassen.
  • Das Abwickle-Schlangenarbeitsverfahren ruft zum Schlangenarbeitsverfahren der Arbeitsschlangen-Implementierungsklasse durch.
  • Das Abwickle-Ausreihungs-Arbeitsverfahren ruft zum Ausreihungs-Arbeitsverfahren der Arbeitsschlangen-Implementierungsklasse durch.
  • Das Erhalte-Aktuelles-Arbeitsschlangen-Zustand-Verfahren gibt den Zustand der Arbeitsschlange 12 auf der Grundlage des Zustands des Arbeitsschlangen-Zustände-Objekts zurück.
  • Das Schalte-Zustand-Verfahren ändert den Zustand der Arbeitsschlange auf synchronisierte Weise. Das Verfahren fordert ein Synchronisierungsobjekt auf zu warten, bis irgendeine andere Zustandsänderung beendet ist. Dann wird der aktuelle Zustand verlassen (durch das Aufrufen des Verlasse-Zustand-Verfahrens im Zustand), es wird auf den neuen Zustand verwiesen, und der neue Zustand wird betreten (indem das Enter-Zustand-Verfahren im Zustand aufgerufen wird). Die Fadensynchronisierung wird dann freigegeben.
  • Die Start-Arbeitsfäden beginnen mit der Ausführung der Fäden im Faden-Pool 14.
  • Das Freigabe-Der-In-Die-Schlange-Eingereihten-Arbeitsfäden-Verfahren reiht für jeden Faden im Pool 14 abhängig vom eingegebenen Parameter entweder ein Kein-Betrieb-Objekt oder einen NULL-Arbeit-Betrieb (z. B. eine 0 zum E/A-Durchführungsport) in die Schlange ein. NULL-Betriebe veranlassen, dass ein Faden endet, und ein Kein-Betrieb veranlasst einen Faden, den Kein-Betrieb auszuführen und in einen neuen Zustand zu treten.
  • Die Betrieb-Synch-Beginn- und Betrieb-Synch-Ende-Verfahren werden verwendet, um die Fadensynchronisierung im Schalte-Zustände-Verfahren zu beginnen und zu beenden.
  • Das Wartezustand-Synchronisier-Verfahren fordert den aktuellen Zustand zu warten auf, bis die Arbeitsschlange im aktuellen Zustand im Wartezustand ist.
  • Arbeitsschlangen-Implementierungsklasse
  • Die Arbeitsschlangen-Implementierungsklasse implementiert die Arbeitsschlange 12, indem die vom Windows NT-Betriebssystem bereitgestellten E/A-Durchführungsports verwendet werden.
  • Das Schlangen-Abwickleattribut ist eine Abwicklung für das E/A-Durchführungsport.
  • Das Schlangentiefenattribut ist ein verriegelter Zählwert der Anzahl von Betrieben an der Schlange. Ein verriegelter Zählwert ist ein Wort im Speicher, das auf eine nicht teilbare Weise inkrementiert, gesenkt oder mit einem neuen Wert aktualisiert wird. Ein unabhängiges Synchronisierungsobjekt ist unnötig, da die Synchronisation in dem verriegelten Zählwert eingebaut ist.
  • Das Schlangenarbeitsverfahren inkrementiert das Schlangentiefenattribut und reiht den Fadenbetrieb, auf den verwiesen wird, in das E/A-Durchführungsport ein.
  • Das Schlangen-Null-Arbeit-Verfahren inkrementiert die Schlangentiefe und reiht den Wert 0 in das E/A-Durchführungsport ein.
  • Das Ausreihungs-Arbeit-Verfahren erhält einen Zeiger für einen Fadenbetrieb vom E/A-Durchführungsport, senkt die Schlangentiefe und gibt den Zeiger zurück.
  • Das Erhalte-Schlangentiefe-Verfahren gibt die Anzahl der im E/A-Durchführungsport eingereihten Fadenbetriebe zurück.
  • Arbeitsschlangen-Zustandklasse
  • Die Arbeitsschlangen-Zustandklasse verwaltet den Zustand der Arbeitsschlange 12.
  • Das Besetzt-Faden-Zählwert-Attribut ist ein gezähltes Ereignis, das signalisiert, wann die Anzahl der besetzten Fäden 0 ist; d. h. wenn die Arbeitsschlange 12 0 Fadenbetriebe hat.
  • Die Enter- und Exit-Zustand-Verfahren rufen abhängig vom aktuellen Zustand der Arbeitsschlange durch zu den entsprechenden Verfahren in den Klassen Arbeitsschlange-Gestoppt und Arbeitsschlange-Unterbrochen.
  • Die Start-Schlangen-, Stopp-Schlangen-, Unterbreche-Schlangen und Wiederaufnahme-Schlange-Verfahren rufen abhängig vom aktuellen Zustand der Arbeitsschlange durch zum passenden Verfahren der entsprechenden Verfahren in den Klassen Arbeitsschlangen-Gestoppt-Zustand, Arbeitsschlangen-Unterbreche-Zustand und Arbeitsschlangen-Laufend-Zustand.
  • Das Schlangen-Arbeitsverfahren ruft zurück zum Arbeitsschlangen-Zustand-Controller, um die Arbeit aus der Schlange zum E/A-Durchführungsport zu entnehmen.
  • Die Freigabe-Schlangen-Arbeitsfäden, Start-Arbeitsfäden und Schalte-Zustände-Verfahren rufen durch zu den entsprechenden Verfahren im Arbeitsschlangen-Zustand-Controller.
  • Das Wartezustand-Synchronisier-Verfahren wartet auf das Besetzt-Faden-Gezählt-Ereignis, um zu signalisieren, dass die Arbeitsschlange im Wartezustand ist, und kehrt dann zurück.
  • Das Inkrementier-Besetzt-Faden-Verfahren inkrementiert die Anzahl der Besetzt-Fäden im aktuellen Zustand, und das Senke-Besetzt-Faden-Verfahren senkt die Zahl der Besetzt-Fäden im aktuellen Zustand.
  • Arbeitsschlange-Gestoppt-Zustand-Klasse
  • Die Arbeitsschlange-gestoppt-Zustand-Klasse schließt Attri bute und Verfahren ein, die das Verhalten der Arbeitsschlange im gestoppten Zustand implementieren.
  • Das Kein-Betrieb-Attribut ist ein Fadenbetrieb, der keine Arbeit durchführt, die für die Fadenausführung rückgeführt wird, wenn im gestoppten Zustand aus der Schlange herausgenommen wird.
  • Der Faden-Zählwert ist die Anzahl der Fäden 22 im Faden-Pool 14.
  • Das Enter-Zustand-Verfahren gibt alle Fäden zur Beendigung frei, und das Exit-Zustand-Verfahren inkrementiert den Faden-Besetzt-Zählwert für jeden Faden im Faden-Pool und ruft das Verfahren Start-Arbeitsfäden auf.
  • Das Start-Schlange-Verfahren ändert die Arbeitsschlange auf den unterbrochenen Zustand, und das Unterbrochen-Schlange-Verfahren ruft das Start-Schlange-Verfahren mit demselben Ergebnis auf.
  • Das Schlangenarbeitsverfahren tut nichts, da die Arbeit nicht im gestoppten Zustand in die Schlange eingereiht werden kann.
  • Das Ausreihungs-Arbeitsverfahren ruft den Arbeitsschlangen-Zustand-Controller auf, um vom E/A-Durchführungsport einen Fadenbetrieb zu erhalten. Wenn der Fadenbetrieb gültig ist, wird stattdessen ein Kein-Betrieb rückgeführt. Dies erlaubt der Arbeitsschlange, im gestoppten Zustand zu entleeren. Wenn die rückgeführte Arbeit NULL (ein Wert 0) ist, wird der Besetzt-Faden-Zählwert gesenkt und NULL rückgeführt.
  • Arbeitsschlangen-Unterbrochen-Zustand-Klasse
  • Der Arbeitsschlangen-Unterbrochen-Zustand implementiert das Verhalten der Arbeitsschlange im unterbrochenen Zustand.
  • Das Faden-Unterbrecher-Attribut ist ein Ereignis, das gesetzt wird, wenn Fäden ablaufen dürfen, und es wird gelöscht, wenn Fäden unterbrochen werden sollen.
  • Das Kein-Betrieb-Attribut ist ein Fadenbetrieb, der nichts tut, und das vom Ausreihungs-Arbeitsverfahren rückgegeben wird, nachdem der Faden-Unterbrecher signalisiert wird.
  • Das Enter-Zustand-Verfahren setzt das Faden-Unterbrecher-Ereignis zurück, um das Ausreihen der Arbeit zu sperren und alle Fäden mit einem Kein-Betrieb freizugeben. Dies erzwingt, dass die Fäden herausgenommen werden und in den unterbrochenen Zustand eintreten und nach dem Faden-Unterbrecher-Ereignis sperren.
  • Das Exit-Zustand-Verfahren setzt das Faden-Unterbrecher-Ereignis, wodurch erlaubt wird, dass die Ausreihungsbetriebe fortfahren.
  • Das Stopp-Schlange-Verfahren ändert die Arbeitsschlange auf den gestoppten Zustand.
  • Das Wiederaufnahme-Schlange-Verfahren ändert die Arbeitsschlange auf den laufenden Zustand.
  • Das Ausreihungs-Arbeitsverfahren senkt den Besetzt-Faden-Zählwert. Der Faden ist nicht belegt, wenn er auf das Signal des Faden-Unterbrechers wartet. Das Ausreihungs-Arbeitsverfahren wartet dann darauf, dass der Faden-Unterbrecher signalisiert wird, woraufhin der Besetzt-Faden-Zählwert inkrementiert wird und ein Kein-Betrieb rückgeführt wird. Der Faden führt dann den Kein-Betrieb aus und wartet auf den nächsten verfügbaren Betrieb.
  • Arbeitsschlangen-Laufend-Zustand-Klasse
  • Die Arbeitsschlangen-Laufend-Zustand-Klasse implementiert das Verhalten der Arbeitsschlange im laufenden Zustand.
  • Das Stopp-Schlange-Verfahren ändert den Zustand der Arbeitsschlange von laufend auf gestoppt, und das Unterbreche-Schlange-Verfahren ändert den Zustand der Arbeitsschlange von laufend auf unterbrochen.
  • Das Ausreihungs-Arbeitsverfahren senkt als erstes den Besetzt-Faden-Zählwert., da ein Faden nicht belegt ist, wenn er auf Arbeit von der Arbeitsschlange wartet. Das Verfahren erhält dann den nächsten Fadenbetrieb durch das Aufrufen der Arbeitsschlangen-Implementierung. Der Besetzt-Faden-Zählwert wird dann inkrementiert und ein Zeiger wird zum herausgenommenen Fadenbetrieb zurückgeführt.
  • Alle relevanten Attribute und Verfahren, die Glieder verschiedener Klassen sind, werden weiter in den Objekt-Interaktionsdiagrammen beschrieben, die folgen.
  • 4 ist ein Objekt-Interaktionsdiagramm, das das Einreihen in die Schlange eines Fadenbetriebs darstellt, wenn sich der Faden-Pool in einem laufenden oder unterbrochenen Zustand befindet. In diesem Objekt-Interaktionsdiagramm sowie in anderen, die folgen, wurden viele der "Rückkehr"-Steuerlinien weggelassen, um die Überfüllung in den Zeichnungen zu reduzieren. Es wird jedoch geschätzt sein, dass Rückführungen, selbst wenn sie nicht gezeigt werden, einbegriffen sind.
  • Die Start- und Endknoten stellen ein Aufrufprogramm, z. B. den Faden-Pool-Manager 18 (1), dar. Um einen Fadenbetrieb 20 in die Schlange einzureihen, wird das Schlangen-Arbeitsverfahren des Arbeitsschlangen-Objekts mit Bezug auf den einzureihenden Fadenbetrieb aufgerufen, der durch zum Schlangen-Arbeitsverfahren des Arbeitsschlangen-Zustand-Controller-Objekts aufgerufen wird.
  • Der Arbeitsschlangen-Zustand-Controller ruft sein Erhalte-Aktuelles-Arbeitsschlangen-Zustand-Verfahren auf, um den aktuellen Zustand des Faden-Pools 14 zu erhalten. Das Erhalte-Aktuelle-Arbeitsschlangen-Zustand-Verfahren ruft das Warteverfahren des Betriebs-Synchr.-Objekt dazu auf, mit anderen Fäden zu synchronisieren. Das bedeutet, dass, wenn ein anderer Faden in einem kritischen Abschnitt ausgeführt wird (z. B. indem er den Zustand des Faden-Pools ändert), das Warteverfahren den Aufruffaden dazu veranlasst zu warten, bis der andere Faden seinen kritischen Abschnitt ausgeführt hat, und die Steuerung wird dann zum Warte-Schlangen-Zustand-Controller zurückgeführt. Das Erhalte-Aktuelles-Arbeitsschlangen-Zustand-Objekt erhält dann einen Zeiger für das aktuelle Zustand-Objekt (für dieses Diagramm ein Zeiger für ein Arbeitsschlangen-Laufend-Zustand-Objekt) und löst dann die Synchronisation aus. Das Erhalte-Aktuelles-Arbeitsschlangen-Zustand-Verfahren gibt dann den Zeiger an das Schlangen-Arbeitsverfahren des Arbeit-Zustand-Controller-Objekts zurück.
  • Mit dem Zeiger für das Arbeitsschlangen-Laufend-Zustand-Objekt ruft der Arbeitsschlangen-Zustand-Controller das Schlangenarbeitsverfahren auf, das den Arbeitsschlangen-Controller-Bezug ("Bezug" bedeutet in diesem Fall Zeiger) sichert. Das Arbeitsschlangen-Laufend-Zustand-Objekt ruft dann das Abwickle-Schlangen-Arbeitsverfahren zurück in den Arbeitsschlangen-Zustand-Controller, der das Schlangenarbeitsverfahren im Arbeitsschlangen-Implementierung-Objekt aufruft. Das Arbeitsschlangen-Implementierung-Objekt inkrementiert die Schlangentiefe und gibt die Steuerung an den Arbeitsschlangen-Zustand-Controller zurück. Die Steuerung wird schließlich zum ursprünglichen aufrufenden Programm zurückgeführt.
  • 5 ist ein Objekt-Interaktionsdiagramm, das den Übergang des Faden-Pools von einem laufenden in einen unterbrochenen Zustand darstellt. In einer Verwendungsform der Erfindung steuert der Faden-Pool-Manager 18 den Zustand des Faden-Pools 14. Der Faden-Pool-Manager 18 ruft das Unterbreche-Schlange-Verfahren des Arbeitsschlangen-Objekts auf, um die Zustandsänderung von laufend auf unterbrochen zu starten, die zum Unterbreche-Schlange-Verfahren des Arbeitsschlangen-Zustand-Controller-Objekts durchruft.
  • Das Arbeitsschlangen-Zustand-Controller-Objekt erhält dann mittels Verwendung des Erhalte-aktuellen-Arbeitsschlangen-Zustands, wie oben beschrieben, den aktuellen Zustand des Faden-Pools 14. Der Zeiger für das Arbeitsschlangen-Laufend-Zustand-Objekt wird dann verwendet, um das Unterbreche-Schlange-Verfahren im Objekt aufzurufen. Das Arbeitsschlangen-Laufend-Zustand-Objekt ruft zurück zum Schalte-Zustände-Verfahren des Arbeitsschlangen-Zustand-Controller-Objekts, das die Fadensynchronisierung mit dem Warteverfahren aufruft, verlässt den aktuellen Zustand und zeigt den neuen Zustand an. Das bedeutet, dass der Zeiger auf das Arbeitsschlangen-Unterbrochen-Zustand-Objekt geschaltet wird. Wenn ein Zustand-Übergang erfolgt, haben sowohl der alte Zustand als auch der neue Zustand eine Chance, um irgendeine Austritts- oder Eintrittstätigkeit durchzuführen. Das "Verlasse Zustand ( )"-Verfahren wird vom alten Zustand für die Austritttätigkeiten verwendet.
  • Das Schalte-Zustand-Verfahren ruft dann das Enter-Zustand-Verfahren des Arbeitsschlangen-Unterbrochen-Zustand-Objekts auf. Das Enter-Zustand-Verfahren setzt das Unterbrecher-Ereignis zurück. Mit anderen Worten wird die Synchronisation im Unter brecher-Ereignis freigegeben, das im wesentlichen irgendwelche unterbrochenen Fäden freigibt, die auf das "Unterbrecher-Ereignis" warten. Dann ruft das Enter-Zustand-Verfahren mit einem NOP-(Kein-Betrieb)-Parameter zurück zum Freigabe-Schlangen-Eingereiht-Arbeitsfäden-Verfahren, um anzuzeigen, dass ein Kein-Betrieb für jeden Faden in die Schlange eingereiht wird. Das Schlangenarbeitsverfahren des Arbeitsschlangen-Implementierung-Objekt wird mit einem Kein-Betrieb-Parameter für jeden der Fäden 22 im Faden-Pool 14 aufgerufen. Jeder Faden wird schließlich einen Kein-Betrieb aus der Schlange ausreihen, was bewirken wird, dass der Faden in den unterbrochenen Zustand tritt. Die Steuerung wird dann zum Arbeitsschlangen-Zustand-Controller-Objekt zurückgeführt, der die Fadensynchronisierung auslöst und die Steuerung zum aufrufenden Programm zurückführt.
  • 6 ist ein Objekt-Interaktionsprogramm, das den Übergang des Faden-Pools von einem laufenden auf einen gestoppten Zustand darstellt. Der Faden-Pool-Manager 18 ruft das Stopp-Schlange-Verfahren des Arbeitsschlangen-Objekts auf, um die Zustandsänderung von laufend auf gestoppt zu starten, die durch zum Stopp-Schlange-Verfahren des Arbeitsschlangen-Zustand-Controller-Objekts aufruft.
  • Das Arbeitsschlangen-Zustand-Controller-Objekt erhält dann mittels Verwendung des Erhalte-Aktuellen-Arbeitsschlangen-Zustand-Objekts den aktuellen Zustand des Faden-Pools 14. Der Zeiger für das Arbeitsschlangen-Laufend-Zustand-Objekt wird dann verwendet, um das Stopp-Schlange-Verfahren im Objekt aufzurufen. Das Arbeitsschlangen-Laufend-Zustand-Objekt ruft zurück zum Schalte-Zustände-Verfahren des Arbeitsschlangen-Zustand-Controller-Objekts mit dem ARBEITS_WARTESCHLANGEN_GESTOPPT-Parameter, das die Fadensynchronisierung mit dem Warteverfahren aufruft, verlässt den aktuellen Zustand und zeigt den neuen Zustand an. Das bedeutet, dass der Zeiger auf das Arbeitsschlangen-Gestoppt-Zustand-Objekt geschaltet wird.
  • Das Schalte-Zustand-Verfahren ruft dann das Enter-Zustand-Verfahren des Arbeitsschlangen-Gestoppt-Zustand-Objekts auf. Das Enter-Zustand-Verfahren bildet das Gegenstück des Verlasse-Zustand-Verfahrens. Es wird aufgerufen, um irgendwelche Eintritts tätigkeiten im neuen Zustand durchzuführen, wenn ein Zustand-Übergang stattfindet. Dann ruft das Enter-Zustand-Verfahren mit einem NULL-Parameter zurück zum Freigabe-Schlangen-Arbeitsfäden-Verfahren, um anzuzeigen, dass für jeden Faden eine Null Schlangeneingereiht werden muss. Das Schlangen-Null-Arbeitsverfahren des Arbeitsschlangen-Implementierung-Objekts wird für jeden der Fäden 22 im Faden-Pool 14 aufgerufen. Jeder Faden wird schließlich einen NULL-Betrieb ausreihen, was bewirken wird, dass der Faden in den gestoppten Zustand eintritt. Die Steuerung wird dann zum Arbeitsschlangen-Zustand-Controller-Objekt rückgeführt, das die Fadensynchronisierung freigibt und die Steuerung zum aufrufenden Programm zurückgibt.
  • 7 ist ein Objekt-Interaktionsdiagramm, das den Übergang des Faden-Pools von einem unterbrochenen auf einen laufenden Zustand darstellt. Der Faden-Pool-Manager 18 ruft das Wiederaufnahme-Schlange-Verfahren des Arbeitsschlangen-Objekts auf, um die Zustandsänderung von unterbrochen auf laufend zu beginnen, die durch zum. Wiederaufnahme-Schlange-Verfahren des Arbeitsschlangen-Zustand-Controller-Objekts aufruft.
  • Das Arbeitsschlangen-Zustand-Controller-Objekt erhält dann den aktuellen Zustand des Faden-Pools 14, indem wie oben beschrieben der Erhalte-Aktuellen-Arbeitsschlangen-Zustand verwendet wird. Der Zeiger für das Arbeitsschlangen-Unterbrochen-Zustand-Objekt wird dann verwendet, um das Wiederaufnahme-Schlange-Verfahren im Objekt aufzurufen. Das Arbeitsschlangen-Unterbrochen-Zustand-Objekt ruft zurück zum Schalte-Zustände-Verfahren des Arbeitsschlangen-Zustand-Controller-Objekts mit dem ARBEITS WARTESCHLANGEN GESTOPPT-Parameter, das die Fadensynchronisierung mit dem Warteverfahren aufruft, den aktuellen Zustand verlässt und auf den neuen Zustand verweist. Der Zeiger wird auf das Arbeitsschlangen-Laufend-Zustand-Objekt geschaltet. Das Verlasse-Zustand-Verfahren ruft das Setze-Verfahren des Faden-Unterbrecher-Objekts auf, um die Zustand-Übergänge in eine serielle Form zu bringen, damit verhindert wird, dass die Fäden untereinander die Zustände ändern. Der gesetzte Aufruf wird die Synchronisierung derart erhöhen, dass der Faden unterbrochen wird, wenn irgendein anderer Faden bereits als gesetzt aufge rufen ist.
  • Das Schalte-Zustand-Verfahren ruft dann das Enter-Zustand-Verfahren des Arbeitsschlangen-Laufend-Zustand-Objekts auf. Die Steuerung wird daraufhin zum Arbeitsschlangen-Zustand-Controller-Objekt zurückgeführt, das die Fadensynchronisierung auslöst und die Steuerung zum ausführenden Programm zurückgibt.
  • 8 ist ein Objekt-Interaktionsprogramm, das den Übergang des Faden-Pools von einem unterbrochenen auf einen gestoppten Zustand darstellt. Das Verfahren ist ähnlich dem Übergang vom laufenden Zustand auf dem gestoppten Zustand, mit der Ausnahme, dass das Verlasse-Zustand-Verfahren des Arbeitsschlangen-Unterbreche-Zustand-Objekts das Setze-Verfahren des Faden-Unterbreche-Vorrichtung-Objekts aufruft.
  • 9 ist ein Objekt-Interaktionsprogramm, das den Übergang des Faden-Pools von einem gestoppten auf einen unterbrochenen Zustand darstellt. Der Faden-Pool-Manager 18 ruft das Start-Schlange-Verfahren des Arbeitsschlangen-Objekts auf, um die Zustandsänderung von gestoppt auf unterbrochen zu starten, die durch zum Start-Schlange-Verfahren des Arbeitsschlangen-Zustand-Controller-Objekts aufruft.
  • Das Arbeitsschlangen-Zustand-Controller-Objekt erhält dann mittels Verwendung des Erhalte-Aktuellen-Arbeitsschlangen-Zustands den aktuellen Zustand des Faden-Pools 14. Der Zeiger für das Arbeitsschlangen-Gestoppt-Zustand-Objekt wird dann verwendet, um das Start-Schlange-Verfahren im Objekt aufzurufen. Das Arbeitsschlangen-Gestoppt-Zustand-Objekt ruft zurück zum Schalte-Zustände-Verfahren des Arbeitsschlangen-Zustand-Controller-Objekts mit dem ARBEITS_WARTESCHLANGEN_UNTERBROCHEN-Parameter, wobei die Fadensynchronisierung mit dem Warteverfahren aufgerufen wird.
  • Das Verlasse-Zustand-Verfahren ruft dann das Arbeitsschlangen-Gestoppt-Zustand-Objekts auf, das zurück zum Start-Arbeitsfäden-Verfahren des Arbeitsschlangen-Zustand-Controller-Objekts ruft. Das Start-Arbeitsfäden-Verfahren wartet zunächst darauf, dass irgendwelche laufenden Fäden ausgeführt werden (und aus dem Faden-Pool gelöscht werden) und ruft dann das Start-Fäden-Verfahren des Arbeitsschlangen-Faden-Pool-Objekts auf, um die neuen Fäden im Faden-Pool 14 zu starten. Nachdem die Fäden gestartet sind, wird die Steuerung zum Arbeitsschlangen-Zustand-Controller-Objekt zurückgegeben, und die Verarbeitung fährt wie oben in 5 beschrieben fort.
  • 10 ist ein Objekt-Interaktionsdiagramm, das die Ausführung eines Fadens darstellt, wenn sich der Faden-Pool in einem unterbrochenen Zustand befindet. Die Fadenausführung wird mit dem Betriebs-Hauptverfahren des Arbeitsschlangen-Zustand-Controller-Objekts gestartet. Der Faden erhält zuerst den aktuellen Zustand des Faden-Pools, wie oben beschrieben, und ruft dann das Ausreihungs-Arbeitsverfahren des Arbeitsschlangen-Unterbrochen-Zustand-Objekts auf.
  • Das Ausreihungs-Arbeitsverfahren senkt als erstes der Zählwert der belegten Fäden. Da für den Faden noch keine Arbeit herausgenommen wurde, ist der Faden nicht besetzt. Dann wird das Warteverfahren des Faden-Unterbrecher-Objekts aufgerufen, um darauf zu warten, signalisiert zu werden. Wenn die Steuerung zum Arbeitsschlangen-Unterbrochen-Zustand-Objekt zurückgeführt wird, wird der Zählwert der besetzten Fäden inkrementiert, und ein Kein-Betrieb wird als Arbeit für den Faden zurückgeführt. Das Arbeitsschlangen-Zustand-Controller-Objekt ruft dann das Betrieb-Hauptverfahren des Kein-Betrieb-Objekts auf. Das Kein-Betrieb-Objekt ist ein Fadenbetrieb. Der Faden führt den Kein-Betrieb-Fadenbetrieb aus und wartet dann auf den nächsten verfügbaren Betrieb. Unter einem normalen Betrieb wird die NOP-Betriebsausführung ausgeführt und der Faden wird realisieren, dass sich der Zustand geändert hat. Der Grund für den NOP liegt darin, irgendwelche unterbrochenen Fäden aufzuwecken, so dass sie realisieren können, dass sich der Zustand geändert hat.
  • 11 ist ein Objekt-Interaktionsdiagramm, das die Ausführung eines Fadens darstellt, wenn sich der Faden-Pool in einem laufenden Zustand befindet. Die Fadenausführung wird mit dem Betriebs-Hauptverfahren des Arbeitsschlangen-Zustand-Controller-Objekts gestartet. Der Faden erhält zuerst den aktuellen Zustand des Faden-Pools, wie oben beschrieben, und ruft dann das Ausreihungs-Arbeitsverfahren des Arbeitsschlangen-Laufend-Zustand-Objekts auf.
  • Das Ausreihungs-Arbeitsverfahren senkt den Zählwert der besetzten Fäden und ruft das Abwickle-Ausreihungs-Arbeitsverfahren des Schlangenzustand-Controller-Objekts auf, das das Ausreihungs-Arbeitsverfahren des Arbeitsschlangen-Implementierung-Objekts aufruft. Das Arbeitsschlangen-Implementierung-Objekt erhält einen Fadenbetrieb von der Arbeitsschlange 12 (falls einer verfügbar ist), senkt die Tiefe der Arbeitsschlange und wirft den Fadenbetrieb an das Arbeitsschlangen-Zustand-Controller-Objekt heraus und gibt es daran zurück. Die Steuerung wird dann zum Arbeitsschlangen-Laufend-Zustand-Objekt und danach zum Arbeitsschlangen-Zustand-Controller-Objekt zurückgeführt. Das Betrieb-Hauptverfahren des Betriebsobjekts wird aufgerufen, um den Fadenbetrieb auszuführen. Das Betriebsobjekt wird aus einer vom Benutzer bestimmten Klasse instantiiert, die eine Fadenbetrieb-Klasse darstellt.
  • Wenn der Faden die Ausführung des Fadenbetriebobjekts durchgeführt hat, kehrt der Faden zurück, um den Zustand des Faden-Pools zu erhalten und einen anderen Fadenbetrieb aus der Schlange zu nehmen.
  • 12 ist ein Objekt-Interaktionsdiagramm, das die Ausführung eines Fadens darstellt, wenn sich der Faden-Pool in einem gestoppten Zustand befindet und die Arbeitsschlange nicht leer ist. Die Fadenausführung wird mit dem Betriebs-Hauptverfahren des Arbeitsschlangen-Zustand-Controller-Objekts gestartet. Der Faden erhält zuerst den aktuellen Zustand des Faden-Pools, wie oben beschrieben, und ruft dann das Ausreihungs-Arbeitsverfahren des Arbeitsschlangen-gestoppt-Zustand-Objekts auf.
  • Das Ausreihungs-Arbeitsverfahren ruft das Abwickle-Ausreihungs-Arbeitsverfahren des Arbeitsschlangen-Zustand-Controller-Objekts auf, das das Ausreihungs-Arbeitsverfahren des Arbeitsschlangen-Implementierung-Objekts aufruft. Das Arbeitsschlangen-Implementierung-Objekt erhält einen Fadenbetrieb von der Arbeitsschlange 12 (vorausgesetzt, dass einer verfügbar ist), senkt die Tiefe der Arbeitsschlange und wirft den Fadenbetrieb heraus und gibt ihn an das Arbeitsschlangen-Zustand-Controller-Objekt zurück. Die Steuerung wird dann, zum Arbeitsschlangen- Gestoppt-Zustand-Objekt rückgeführt. Wenn der vom Arbeitsschlangen-Implementierung-Objekt rückgeführte Fadenbetrieb gültig ist, wird ein Kein-Betrieb an das Arbeitsschlangen-Zustand-Controller-Objekt zurückgeführt.
  • Das Betrieb-Hauptverfahren des Betriebsobjekts wird aufgerufen, um den Kein-Betrieb-Fadenbetrieb auszuführen. Wenn der Faden den Kein-Betrieb-Fadenbetrieb ausgeführt hat, kehrt der Faden zurück, um den Zustand des Faden-Pools zu erhalten und einen weiteren Fadenbetrieb aus der Schlange zu nehmen.
  • 13 ist ein Objekt-Interaktionsdiagramm, das die Ausführung eines Fadens darstellt, wenn sich der Faden-Pool in einem gestoppten Zustand befindet und die Arbeitsschlange leer ist. Die Objekt-Interaktion für eine leere Arbeitsschlange 12, wenn sich der Faden-Pool 14 in einem gestoppten Zustand befindet, ähnelt der Objektinteraktion, wenn die Arbeitsschlange nicht leer ist. Jedoch liegt der Unterschied darin, dass das Arbeitsschlangen-Implementierung-Objekt die NULL zum Arbeitsschlangen-Zustand-Controller-Objekt zurückführt, das die Senkung des Besetzt-Faden-Zählwerts bewirkt, und der Faden wird zerstört.
  • Entsprechend stellt die vorliegende Erfindung unter weiteren Aspekten ein Verfahren zum Verwalten eines Faden-Pools und eine von den Fäden durchzuführende Arbeitsschlange bereit. Weitere Aspekte und Ausführungsformen der vorliegenden Erfindung werden den Fachleuten auf dem Gebiet in Zusammenhang mit der Betrachtung der Beschreibung und der praktischen Anwendung der hierin offenbarten Erfindung ersichtlich. Es ist beabsichtigt, die Beschreibung und die dargestellten Ausführungsformen lediglich als Beispiele zu betrachten, wobei der wahre Schutzumfang der Erfindung durch die folgenden Ansprüche angezeigt wird.

Claims (22)

  1. Ein Computer-implementiertes Verfahren zum Verwalten eines Pools von Fäden für die Ausführung von Fadenbetrieben, worin der Pool (14) von Fäden instantiiert wird, damit er eine Mehrzahl von Fäden (22) hat, gekennzeichnet durch die Instantiierung einer Arbeitsschlange (12), die einen Programm-steuerbaren Zustand aufweist; die Einreihung der Fadenbetriebe in die Arbeitsschlange, um von Fäden im Faden-Pool ausgeführt zu werden, wenn sich die Arbeitsschlange in einem ersten vorbestimmten Zustand befindet; und die Verweigerung der Einreihung der Fadenbetriebe in die Arbeitsschlange, wenn sich die Arbeitsschlange in einem zweiten von einer Mehrzahl an Zuständen befindet.
  2. Das Verfahren nach Anspruch 1, das weiterhin umfasst, dass jeder der Fäden im Faden-Pool folgende Schritte wiederholt: das Herausnehmen eines Fadenbetriebs aus der Arbeitsschlange; und das Ausführen des Fadenbetriebs.
  3. Das Verfahren nach Anspruch 2, das weiterhin das Einreihen eines Fadenbetriebs aus der Arbeitsschlange umfasst, wenn sich die Arbeitsschlange in einem laufenden Zustand befindet.
  4. Das Verfahren nach Anspruch 3, das weiterhin das Einreihen eines Fadenbetriebs in die Arbeitsschlange umfasst, wenn sich die Arbeitsschlange in einem unterbrochenen Zustand befindet.
  5. Das Verfahren nach Anspruch 4, das weiterhin das Ablehnen einer Anforderung zum Einreihen in die Arbeitsschlange eines Fadenbetriebs umfasst, wenn sich die Arbeitsschlange in einem gestoppten Zustand befindet.
  6. Das Verfahren nach Anspruch 5, das, wenn der Zustand der Arbeitsschlange von laufend auf unterbrochen geändert wird, die Durchführung des Schritts zum Einstellen des Herausnehmens aus der Arbeitsschlange der Fadenbetriebe umfasst.
  7. Das Verfahren nach Anspruch 6, das, wenn sich die Arbeitsschlange in einem unterbrochenen Zustand befindet, weiterhin folgendes umfasst: dass jeder der Fäden im Faden-Pool damit fortfährt, Anforderungen zu unterbreiten, damit Fadenbetriebe aus der Arbeitsschlange herausgenommen werden; und dass die Kein-Betrieb-Fadenbetriebe als Reaktion auf die Schlangen-Herausnahme-Anforderungen an die Fäden zurückgegeben werden.
  8. Das Verfahren nach Anspruch 5, das, wenn der Zustand der Arbeitsschlange von laufend auf gestoppt geändert wird, weiterhin das Durchführen des Schritts zum Herausnehmen nicht ausgeführter Fadenbetriebe aus der Arbeitsschlange umfasst.
  9. Das Verfahren nach Anspruch 8, das weiterhin die Erlaubnis umfasst, dass in Ausführung befindliche Fadenbetriebe abgeschlossen werden.
  10. Das Verfahren nach Anspruch 8, das, wenn sich die Arbeitsschlange in einem gestoppten Zustand befindet, weiterhin umfasst: dass jeder der Fäden im Faden-Pool damit fortfährt, Anforderungen zu unterbreiten, damit Fadenbetriebe aus der Arbeitsschlange herausgenommen werden; und dass die Kein-Betrieb-Fadenbetriebe als Reaktion auf die Schlangen-Herausnahme-Anforderungen an die Fäden zurückgegeben werden.
  11. Das Verfahren nach Anspruch 5, das weiterhin folgendes umfasst: das Starten eines oder mehrerer zeitweiliger Fäden mit dem Faden-Pool; und das Entfernen der zeitweiligen Fäden aus dem Faden-Pool, wenn die Arbeitsschlange auf einen gestoppten Zustand geändert wird.
  12. Ein Computer-implementiertes Verfahren zum Verwalten der Ausführung der Fadenbetriebe, worin eine Mehrzahl an Faden-Pools instantiiert wird, die jeweils eine verknüpfte Mehrzahl von Fäden einschließen, gekennzeichnet durch die Instantiierung einer Mehrzahl an Arbeitsschlangen, die jeweils einen Programm-steuerbaren Zustand haben und mit einem der Faden-Pools verknüpft sind; die Einreihung der Fadenbetriebe in die Arbeitsschlangen, um von Fäden in den verknüpften Faden-Pools ausgeführt zu werden, worin die Fadenbetriebe in eine Arbeitsschlange eingereiht werden können, wenn sich die Arbeitsschlange in einem ersten vorbestimmten Zustand befindet; und die Verweigerung der Einreihung der Fadenbetriebe in eine Arbeitsschlange, wenn sich die Arbeitsschlange in einem zweiten Zustand der Mehrzahl an Zuständen befindet.
  13. Das Verfahren nach Anspruch 12, das weiterhin umfasst, dass jeder der Fäden im Faden-Pool folgende Schritte wiederholt: das Herausnehmen eines Fadenbetriebs aus der verknüpften Arbeitsschlange; und das Ausführen des Fadenbetriebs.
  14. Das Verfahren nach Anspruch 13, das weiterhin folgendes umfasst: das Einreihen eines Fadenbetriebs in eine Arbeitsschlange, wenn sich die Arbeitsschlange in einem laufenden Zustand und in einem unterbrochenen Zustand befindet; und das Ablehnen einer Anforderung zum Einreihen eines Fadenbetriebs in eine Arbeitsschlange, wenn sich die Arbeitsschlange in einem gestoppten Zustand befindet.
  15. Das Verfahren nach Anspruch 14, das weiterhin folgendes umfasst: das Starten von einem oder mehreren zeitweiligen Fäden mit einem oder mehreren der Faden-Pools; und das Entfernen des eines oder der mehreren zeitweiligen Fäden aus einem Faden-Pool, wenn die mit dem Faden-Pool verknüpfte Arbeitsschlange auf einen gestoppten Zustand geändert wird.
  16. Ein Gerät zum Verwalten eines Pools von Fäden für die Ausführung von Fadenbetrieben, das folgendes umfasst: ein Mittel zur Instantiierung eines Faden-Pools, der eine Mehrzahl von Fäden hat; ein Mittel zur Instantiierung einer Arbeitsschlange, die über einen Programm-steuerbaren Zustand verfügt; ein Mittel zum Einreihen der Fadenbetriebe in die Arbeitsschlange für die Ausführung durch die Fäden im Faden-Pool, wenn sich die Arbeitsschlange in einem ersten vorbestimmten Zustand befindet; und ein Mittel zum Verweigern der Einreihung der Fadenbetriebe in die Arbeitsschlange, wenn sich die Arbeitsschlange in einem zweiten der Mehrzahl an Zuständen befindet.
  17. Ein System zum Verwalten eines Faden-Pools für die Ausführung der Fadenbetriebe, wobei das System ein Faden-Pool-Objekt einschließt, das eine Mehrzahl an Faden-Objekten hat, gekennzeichnet durch ein Arbeitsschlangen-Objekt (12), das einen Programm-steuerbaren Zustand hat; einen Arbeitsschlangen-Controller (16), der mit dem Arbeitsschlangen-Objekt und dem Faden-Pool-Objekt verbunden ist, wobei der Arbeitsschlangen-Controller konfiguriert und angeordnet ist, um Fadenbetriebe für die Ausführung in das Arbeitsschlangen-Objekt einzureihen, wenn sich das Arbeitsschlangen-Objekt in einem ersten Zustand befindet, und um die Einreihung eines Fadenbetriebs in das Arbeitsschlangen-Objekt zu verweigern, wenn sich das Arbeitsschlangen-Objekt in einem zweiten Zustand befindet; und einen Faden-Pool-Manager (18), der mit dem Arbeitsschlan gen-Controller verbunden wird, wobei der Faden-Pool-Manager konfiguriert und angeordnet ist, um selektiv die Zustände des Arbeitsschlangen-Objekts zu ändern.
  18. Das System nach Anspruch 17, worin jedes der Faden-Objekte konfiguriert und angeordnet ist, um die Fadenbetriebe aus der Arbeitsschlange herauszunehmen und um die Fadenbetriebe auszuführen.
  19. Das System nach Anspruch 18, worin die Fadenbetriebe in das Arbeitsschlangen-Objekt eingereiht werden können, wenn sich das Arbeitsschlangen-Objekt in einem laufenden Zustand befindet.
  20. Das System nach Anspruch 19, worin die Fadenbetriebe in das Arbeitsschlangen-Objekt eingereiht werden können, wenn sich das Arbeitsschlangen-Objekt in einem unterbrochenen Zustand befindet.
  21. Das System nach Anspruch 20, worin Anforderungen zum Einreihen eines Fadenbetriebs in die Arbeitsschlange abgelehnt werden, wenn sich das Arbeitsschlangen-Objekt in einem gestoppten Zustand befindet.
  22. Das System nach Anspruch 21, worin der Faden-Pool-Manager konfiguriert und angeordnet ist, um ein oder mehrere zeitweiligen Faden-Objekte mit dem Faden-Pool-Objekt zu starten und um die zeitweiligen Faden-Objekte aus dem Faden-Pool-Objekt zu entfernen, wenn das Arbeitsschlangen-Objekt in einen gestoppten Zustand geändert wird.
DE60004886T 1999-12-20 2000-12-18 System und verfahren zum bereitstellen einer sammlung von wiederverwendbaren fäden zum behandeln von gepufferten aufgaben Expired - Fee Related DE60004886T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US468493 1999-12-20
US09/468,493 US6687729B1 (en) 1999-12-20 1999-12-20 System and method for providing a pool of reusable threads for performing queued items of work
PCT/US2000/034248 WO2001046799A2 (en) 1999-12-20 2000-12-18 A system and method for providing a pool of reusable threads for performing queued items of work

Publications (2)

Publication Number Publication Date
DE60004886D1 DE60004886D1 (de) 2003-10-02
DE60004886T2 true DE60004886T2 (de) 2004-07-08

Family

ID=23860033

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60004886T Expired - Fee Related DE60004886T2 (de) 1999-12-20 2000-12-18 System und verfahren zum bereitstellen einer sammlung von wiederverwendbaren fäden zum behandeln von gepufferten aufgaben

Country Status (6)

Country Link
US (1) US6687729B1 (de)
EP (1) EP1242873B1 (de)
JP (1) JP3872690B2 (de)
AU (1) AU2273101A (de)
DE (1) DE60004886T2 (de)
WO (1) WO2001046799A2 (de)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6832376B1 (en) * 1999-09-29 2004-12-14 Unisys Corporation Method and apparatus for resuse of a thread for different programmed operations
US6938256B2 (en) 2000-01-18 2005-08-30 Galactic Computing Corporation System for balance distribution of requests across multiple servers using dynamic metrics
US6874027B1 (en) * 2000-04-07 2005-03-29 Network Appliance, Inc. Low-overhead threads in a high-concurrency system
US6842900B2 (en) * 2000-04-18 2005-01-11 Fujitsu Limited Information processing apparatus executing processing corresponding to new thread by reusing arrangement for previous thread
US7565651B1 (en) * 2000-05-25 2009-07-21 Oracle International Corporation Parallel task scheduling system for computers
US7140018B1 (en) * 2000-06-20 2006-11-21 International Business Machines Corporation Method of using a distinct flow of computational control as a reusable abstract data object
US6816905B1 (en) * 2000-11-10 2004-11-09 Galactic Computing Corporation Bvi/Bc Method and system for providing dynamic hosted service management across disparate accounts/sites
US8538843B2 (en) * 2000-07-17 2013-09-17 Galactic Computing Corporation Bvi/Bc Method and system for operating an E-commerce service provider
US7475293B1 (en) 2000-08-04 2009-01-06 Sun Microsystems, Inc. Product check matrix
US20020025819A1 (en) * 2000-08-24 2002-02-28 Zoran Cetusic Wireless communication techniques
US7219346B2 (en) * 2000-12-05 2007-05-15 Microsoft Corporation System and method for implementing a client side HTTP stack
US8505024B2 (en) 2000-12-18 2013-08-06 Shaw Parsing Llc Storing state in a dynamic content routing network
US7051070B2 (en) * 2000-12-18 2006-05-23 Timothy Tuttle Asynchronous messaging using a node specialization architecture in the dynamic routing network
US7930362B2 (en) * 2000-12-18 2011-04-19 Shaw Parsing, Llc Techniques for delivering personalized content with a real-time routing network
GB0119146D0 (en) * 2001-08-06 2001-09-26 Nokia Corp Controlling processing networks
US7080376B2 (en) * 2001-09-21 2006-07-18 Intel Corporation High performance synchronization of accesses by threads to shared resources
US20030115168A1 (en) * 2001-12-17 2003-06-19 Terry Robison Methods and apparatus for database transaction queuing
US7996507B2 (en) * 2002-01-16 2011-08-09 International Business Machines Corporation Intelligent system control agent for managing jobs on a network by managing a plurality of queues on a client
US7085831B2 (en) * 2002-01-16 2006-08-01 International Business Machines Corporation Intelligent system control agent for managing jobs on a network by managing a plurality of queues on a client
US8145759B2 (en) * 2002-11-04 2012-03-27 Oracle America, Inc. Dynamically configurable resource pool
US7007004B2 (en) * 2002-11-20 2006-02-28 Nokia Corporation Concurrent operation of a state machine family
US7703103B2 (en) 2002-12-02 2010-04-20 Borland Software Corporation Serving concurrent TCP/IP connections of multiple virtual internet users with a single thread
US7249355B2 (en) * 2002-12-18 2007-07-24 Microsoft Corporation Unified network thread management
US7257633B2 (en) * 2003-03-03 2007-08-14 Sun Microsystems, Inc. Dynamic allocation of a pool of threads
US7363626B2 (en) * 2003-03-24 2008-04-22 Sun Microsystems, Inc. Thread level application partitioning
US7467390B2 (en) * 2003-04-01 2008-12-16 International Business Machines Corporation Enhanced staged event-driven architecture
US8539089B2 (en) * 2003-04-23 2013-09-17 Oracle America, Inc. System and method for vertical perimeter protection
US7610305B2 (en) 2003-04-24 2009-10-27 Sun Microsystems, Inc. Simultaneous global transaction and local transaction management in an application server
US7743083B2 (en) * 2003-04-24 2010-06-22 Oracle America, Inc. Common transaction manager interface for local and global transactions
US7739252B2 (en) 2003-07-14 2010-06-15 Oracle America, Inc. Read/write lock transaction manager freezing
US7640545B2 (en) * 2003-07-14 2009-12-29 Sun Microsytems, Inc. Transaction manager freezing
US7373640B1 (en) 2003-07-31 2008-05-13 Network Appliance, Inc. Technique for dynamically restricting thread concurrency without rewriting thread code
US8521875B2 (en) * 2003-09-04 2013-08-27 Oracle America, Inc. Identity for data sources
US20050179936A1 (en) * 2004-02-13 2005-08-18 Microsoft Corporation Scalable print spooler
US7624396B1 (en) * 2004-02-26 2009-11-24 Sun Microsystems, Inc. Retrieving events from a queue
US7380248B1 (en) * 2004-02-26 2008-05-27 Sun Microsystems, Inc. Queue alerts
US7844646B1 (en) * 2004-03-12 2010-11-30 Netapp, Inc. Method and apparatus for representing file system metadata within a database for efficient queries
US7539702B2 (en) * 2004-03-12 2009-05-26 Netapp, Inc. Pre-summarization and analysis of results generated by an agent
US7293039B1 (en) 2004-03-12 2007-11-06 Network Appliance, Inc. Storage resource management across multiple paths
US7676810B2 (en) * 2004-06-03 2010-03-09 Sap Ag Identification of execution context
WO2006023508A1 (en) * 2004-08-17 2006-03-02 Shaw Parsing Llc Techniques for upstream failure detection and failure recovery
JP2008510259A (ja) * 2004-08-17 2008-04-03 ショー パーシング リミティド ライアビリティ カンパニー モジュラー型のイベントドリブン処理
US7823158B2 (en) * 2005-08-18 2010-10-26 International Business Machines Corporation Adaptive scheduling and management of work processing in a target context in resource contention
KR100714710B1 (ko) * 2006-02-22 2007-05-04 삼성전자주식회사 입출력 작업에 의해 블로킹된 스레드를 강제 종료하는 장치및 방법
US8209702B1 (en) * 2007-09-27 2012-06-26 Emc Corporation Task execution using multiple pools of processing threads, each pool dedicated to execute different types of sub-tasks
US20090157817A1 (en) * 2007-12-12 2009-06-18 International Business Machines Corporation Using an unsynchronized event pool to improve performance of an event driven im gateway
BR112012001629B1 (pt) 2009-07-28 2019-10-22 Ericsson Telefon Ab L M método de sincronizar o processamento de eventos associados com sessões de aplicação em uma plataforma de processamento de telecomunicações, adaptador de recursos, e, agrupamento de java enterprise edition
US8694961B2 (en) 2012-04-03 2014-04-08 Microsoft Corporation Thread-agile execution of dynamic programming language programs
CN103218264A (zh) * 2013-03-26 2013-07-24 广东威创视讯科技股份有限公司 基于线程池的多线程有限状态机切换方法及装置
US9372722B2 (en) 2013-07-01 2016-06-21 International Business Machines Corporation Reliable asynchronous processing of a synchronous request
US9535759B2 (en) * 2014-05-23 2017-01-03 Osr Open Systems Resources, Inc. Work queue thread balancing
US9547521B2 (en) * 2014-09-25 2017-01-17 Oracle International Corporation System and method for supporting dynamic thread pool sizing in a distributed data grid

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3689151D1 (de) * 1986-12-30 1993-11-11 Ibm Nicht-sperrender Warteschlangenmechanismus.
US5392443A (en) * 1991-03-19 1995-02-21 Hitachi, Ltd. Vector processor with a memory assigned with skewed addresses adapted for concurrent fetching of a number of vector elements belonging to the same vector data
US5542058A (en) * 1992-07-06 1996-07-30 Digital Equipment Corporation Pipelined computer with operand context queue to simplify context-dependent execution flow
DE69429204T2 (de) * 1993-03-26 2002-07-25 Cabletron Systems Inc Ablaufssteuerungsverfahren und -gerät für ein Kommunikationsnetzwerk
US5632032A (en) * 1994-02-07 1997-05-20 International Business Machines Corporation Cross address space thread control in a multithreaded environment
US5504898A (en) * 1994-06-20 1996-04-02 Candle Distributed Solutions, Inc. Threaded environment for AS/400
EP0694837A1 (de) * 1994-07-25 1996-01-31 International Business Machines Corporation Dynamischer Arbeitsbelastungsausgleich
US5812811A (en) * 1995-02-03 1998-09-22 International Business Machines Corporation Executing speculative parallel instructions threads with forking and inter-thread communication
US5752031A (en) * 1995-04-24 1998-05-12 Microsoft Corporation Queue object for controlling concurrency in a computer system
US5928323A (en) * 1996-05-30 1999-07-27 Sun Microsystems, Inc. Apparatus and method for dynamically generating information with server-side software objects
US6085217A (en) * 1997-03-28 2000-07-04 International Business Machines Corporation Method and apparatus for controlling the assignment of units of work to a workload enclave in a client/server system
US6418458B1 (en) * 1998-10-02 2002-07-09 Ncr Corporation Object-oriented prioritized work thread pool

Also Published As

Publication number Publication date
JP2003518286A (ja) 2003-06-03
EP1242873A2 (de) 2002-09-25
JP3872690B2 (ja) 2007-01-24
EP1242873B1 (de) 2003-08-27
US6687729B1 (en) 2004-02-03
WO2001046799A2 (en) 2001-06-28
AU2273101A (en) 2001-07-03
DE60004886D1 (de) 2003-10-02
WO2001046799A3 (en) 2002-03-21

Similar Documents

Publication Publication Date Title
DE60004886T2 (de) System und verfahren zum bereitstellen einer sammlung von wiederverwendbaren fäden zum behandeln von gepufferten aufgaben
DE69630329T2 (de) Verfahren zur Verwaltung des Deaktivierens und Ausschaltens eines Servers
DE69822935T2 (de) Vorrichtung und Verfahren zur dynamischen Regelung der Betriebsmittelzuweisung in einem Computersystem
DE69628798T2 (de) Verfahren zur Übertragung von Multimediadaten
DE4410775C2 (de) Steuergerät und Arbeitsverfahren eines Betriebssystems für dieses Steuergerät
EP0635792B1 (de) Verfahren zur Koordination von parallelen Zugriffen mehrerer Prozessoren auf Resourcenkonfigurationen
DE69727633T2 (de) Verfahren und Gerät zur Benutzerstufeunterstützung für das Synchronisieren mehrerer Ereignisse
DE4033336A1 (de) Verfahren zum erzeugen einer ausfallmeldung und mechanismus fuer ausfallmeldung
EP0525432A2 (de) Verfahren zur Änderung von Systemkonfigurationsdatensätzen in einem Fernmeldevermittlungssystem
DE10003015A1 (de) Die Erzeugung von Ereignis-Bedingungs-Aktions-Regeln aus Prozessmodellen
DE102005013913A1 (de) Unterbrechungsanforderungsprogramm und Mikrocomputer
DE2054068A1 (de) Mit Programmverschachtelung arbei tendes Datenverarbeitungssystem zur gleichzeitigen Verarbeitung mehrerer Programme
DE10059796A1 (de) Steuerung der Lebensdauer von Aktivitäten für die Datenverarbeitung
DE69923658T2 (de) Dynamische speicherplatzzuordnung
DE2101949A1 (de) Verfahren zum Schutz von Datengruppen in einer Multiprocessing-Datenverarbeitungsanlage
DE102009004726A1 (de) Systeme und Verfahren zum Verfolgen von Befehlszeigern und Datenzugriffen
DE4223454A1 (de) Datenuebertragungssystem fuer eine digitale signalverarbeitungsvorrichtung
DE60318993T2 (de) Eingebettete Speicherbereinigung
EP3364257A1 (de) Verfahren zum betrieb eines engineering-systems für ein industrielles prozessautomatisierungssystem und steuerungsprogramm
DE4445651A1 (de) Verfahren zur Steuerung von technischen Vorgängen
DE19615683A1 (de) Verfahren und Steuereinrichtung für eine graphische Steuerung von Abläufen in einem Netzwerkmanagementsystem
DE69838366T2 (de) Fädensynchronisierung durch selektive Objektverriegelung
DE102009057401B3 (de) Betriebsverfahren für einen Rechner mit performance-Optimierung durch Gruppieren von Applikationen
DE60032692T2 (de) Beendung einer Gruppe verwandter Fäden durch Modifzierung des Programmzählers von ausgewählten Kellerspeicherrahmen
EP3441919A1 (de) Verfahren zum austausch von daten zwischen engineering-tools eines engineering-systems sowie engineering-system zur durchführung des verfahrens

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee