"Klaus Petersen" <ng@spectual.ra.bnaa.dk> wrote:
> Jeg er ved at portere et windows program til linux og i den proces er jeg
> stødt på en del, der bruger windows events til b.la. at få een tråd til at
> vente på at en anden tråd når en bestemt tilstand.
>
> Til det er der brugt WaitForSingleObject på en event, som den anden tråd
> sætter med SetEvent når den er i den korrekte tilstand.
>
> Hvad kan man gøre i stedet for?
Hvis man har brug for portabel multi-threading, synkronisering og eventuelt
netværksfunktionalitet i C++, kan man ofte kigge på Douglas C. Schmidt
arbejde.
F.eks. kan artiklen "Strategies for Implementing POSIX Condition Variables
on Win32" (
http://www.cs.wustl.edu/~schmidt/win32-cv-1.html) måske give dig
noget inspiration.
Som der står er koden i artiklen en del af ACE
(
http://www.cs.wustl.edu/~schmidt/ACE.html).
Hvis der er en del tråd-design i programmet kunne man overveje at portere
det til at bruge ACE i stedet for Win32, hvorefter det burde kunne oversætte
på en meget lang række platforme, inklusiv Linux.
Der findes meget dokumentation og mange eksempler på ACE hjemmesiden, men
ellers findes der en række bøger
C++ Network Programming, Vol. 1
Douglas C. Schmidt, Stephen D. Huston
ISBN 0-201-60464-7
C++ Network Programming, Vol. 2
Douglas C. Schmidt, Stephenn D. Huston
ISBN 0-201-79525-6
og een jeg ikke kender, men som formodentlig også er udemærket
ACE Programmer's Guide, The: Practical Design Patterns for Network and
Systems Programming
Stephen D. Huston, James Johnson, Umar Syyid
ISBN: 0-201-69971-0
>
> Jeg har overvejet at bruge observer mønsteret, men ved ikke lige helt
> hvordan jeg skal få den til at vente på Update'n.
Observer hjælper ikke med synkroniseringsspørgsmål.
Design patterns som Reactor og Reactor er mere nyttige at kigge på.
Se POSA2
Pattern-Oriented Software Architecture,
Patterns for Concurrent and Networked Objecs
Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Bushmann
ISBN 0-471-60695-2
Venlig hlisen
Mogens Hansen