Fiber Pool API 1.0.0.2 in Arbeit

Die nächste Version der Fiber Pool API wird mehrere Neuerungen und Änderungen beinhalten:

Neue Synchronisationsklassen RWLock, ReadLock, WriteLock
Bei RWLock handelt es sich um die bekannte Shared-Read/Exclusive-Write-Lock-Primitive.

Neue Methoden in bestehenden Synchronisationsklassen
CriticalSection erhält die neue Methode “BusyEnter()”, die im Gegensatz zu “Enter()” bei bestehendem Lock nur für einen Scheduling-Zyklus unterbrochen wird. Event und Semaphore erhalten das Pendant “BusyWait()”. Die Semaphore-Klasse erlaubt nun das Festlegen eines Maximalwerts sowie das Freigeben einer beliebigen Anzahl an Elementen.

Asynchrone I/O-Routinen in der File-Klasse
Die neuen Methoden “Read()” und “Write()” ermöglichen nun auch asynchrone I/O-Aufrufe aus Fibers heraus. Die Signalisierung erfolgt über die von Event abgeleitete IOEvent-Klasse.

Erste High-Level-Klasse VirtualMemoryPipe
VirtualMemoryPipe ist ein komplexes Synchronisationsobjekt für die Verwendung von virtuellem Speicher. Die Klasse besitzt einen Eingang, über den Daten in den Speicher geschrieben werden können, und eine frei wählbare Anzahl an Ausgängen, aus denen Kopien des Speichers gelesen werden können.
Beispiel: Sie möchten eine MP3-Datei einlesen und gleichzeitig in verschiedenen Tasks die ID3-Tags, die MD5-Summe sowie die Spieldauer berechnen.

I/O-Features aus der FiberPool.DLL in die Fiber Pool API ausgelagert
Die gesamte I/O-Implementierung wurde aus FiberPool entfernt und steht nun im FiberPoolAPI-Projekt als Source-Code zur Verfügung. Zum einen vereinfacht dies die Weiterentwicklung der Klassenbibliothek, zum anderen ist eine spezielle 32-Bit-Version für Vista nicht mehr notwendig.

Die Implementierung der genannten Features ist abgeschlossen, sodass nun das Testen und Dokumentieren ansteht. Das Release wird voraussichtlich in zwei Wochen erfolgen.

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>