You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
2.7 KiB
51 lines
2.7 KiB
2006-08-17 Georg Steffers [GST] <georg@steffers.org>
|
|
|
|
* src/stream_pool.c src/posix/stream_pool.c src/win32/stream_pool.c
|
|
include/stream_pool.h include/posix/stream_pool.h
|
|
include/win32/stream_pool.h src/Makefile.am include/Makefile.am
|
|
and various others (this is a major change):
|
|
Sorry, this is in german and much to declarative...this was a
|
|
thoughts-list that is now realized completely. I will rewrite it when
|
|
i find the time.
|
|
|
|
OK, ich fang mal wieder damit an meine Gedanken aufzunehmen.
|
|
Das Problem das ich jetzt bekomme ist, das es streams unter
|
|
windows nicht gibt...bzw. verschieden arten von streams unterschiedlich
|
|
gehandhabt werden müssen. Hinzu kommt, das WaitForMultipleObject
|
|
nur max. 64 Objekte werwalten kann. Will man mehr verwalten muß man
|
|
das in mehreren streads tun.
|
|
|
|
Daher muß ein stream_pool, anders als andere event listener nicht
|
|
nur aus einem thread bestehen sondern aus einem pro 64 gleicher
|
|
streams und einem Kontoll-Thread. (Hmm, für viele andere event listener
|
|
gilt das gleiche, wenn ich unter Windows mehr als 64 Objekte
|
|
überwachen will. z.B. der fs_watcher. Gerade beim fs_watcher ist
|
|
es aber nun so, daß der unter Windows eh komplett anders
|
|
geschrieben werden muß.)
|
|
|
|
Startet man einen stream_pool_listener, so wird der Kontroll Thread
|
|
gestartet, welcher seinerseits alle weiteren threads startet.
|
|
|
|
Added man einen stream, so muß zunächst nachgesehen werden ob es
|
|
bereits einen <<stream pool>> für diesen stream_type gibt der außerdem
|
|
noch nicht 64 streams enthält, falls es so einen stream pool gibt
|
|
kann man den stream zu diesem hinzufügen, anderenfalls muß ein
|
|
neuer stream pool angelegt werden.
|
|
Nachdem der stream geadded wurde muß nur der stream pool, zu dem
|
|
der stream hinzugefügt wurde neu gestartet werden.
|
|
|
|
Will man einen stream aus einem stream pool entfernen, so muß dieser
|
|
zunächst in allen stream pools gesucht werden, dann muß der thread
|
|
zu dem stream pool in dem sich der stream befindet gestoppt werden
|
|
woraufhin der stream entfernt werden kann. Danach muß der stream pool
|
|
thread wieder gestartet werden.
|
|
|
|
Für UNIX brauche ich nur einen einzige thread methode für alle stream
|
|
pool typen, nämlich die, welche select nutzt.
|
|
Für Windows muß ich je nach dem welcher Art von streams ein stream pool
|
|
enthält unterschiedliche thread methoden nutzen:
|
|
- select für sockets
|
|
- WaitForMultipleObject für andere (Wie stell ich dabei fest was genau
|
|
mit dem Objekt passiert ist? OK, für pipes ist das Einfach, da es
|
|
eh ein Wege Kommunikation ist.)
|
|
- und möglicherweise noch andere.
|