008
27.12.2004, 21:29 Uhr
Hans
Library Walker (Operator)
|
Hi,
da Du da oben geschrieben hast, das Du mit Threads arbeitest, bin ich davon ausgegangen, das Du kein wirklicher Anfänger mehr bist. Was das Buch angeht, das ist auch "nur" ein einführendes Lehrbuch. Ansonsten hier mal kurz das wesentliche: Semaphoren sind eine spezielle Sorte Variablen, die vom Betriebssystem verwaltet werden. Das stellt dabei sicher, das Änderungen daran zu einem Zeitpunkt nur von einem einzigen Programm oder Thread vorgenommen werden können. Andere Programme oder Threads müssen solange warten, bis die Semaphore vom System wieder frei gegeben wird, um ihren Zustand abfragen zu können. Wenn man jetzt zwei Threads miteinander synchronisieren möchte, was nichts anderes bedeutet, als ihre Arbeit so zu koordinieren, das mit einer bestimmten Aktion erst dann angefangen wird, wenn andere Aktionen vollständig fertig sind, kann man Semaphoren benutzen. Die Semaphore zeigt dem einen Thread an, das andere noch nicht fertig sind, und dem entsprechend noch warten muss. Wenn die anderen fertig sind, ändern sie den Wert (oder Zustand) der Semaphore. Wenn die Semaphore dann beispielsweise den Wert 0 (Null) erreicht hat, weis der wartende Thread, das alle anderen fertig sind, und er mit seiner weiteren Arbeit fortfahren kann. In Deinem speziellen Fall wäre es die Variable set, die Du als Semaphore einsetzen musst, damit Deine Handlungskette unterbrochen wird, also ein Teil des Programms in Warteposition geht. Wie man Multithreadingprogramme schreibt, steht u.a. in der MSDN, hier sogar auf Deutsch. Ansonsten hilft vielleicht noch ein Blick auf die Ergebnisse von Suchmaschienen. Wenn dort von Semaphoren im Zusammenhang von Prozess- oder Threadsynchronisation oder dem sogenannten "5-Philosophen-Problem" die Rede ist, bist an der richtigen Stelle.
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. Dieser Post wurde am 27.12.2004 um 21:42 Uhr von Hans editiert. |