| Thread :: Resource :: rwlock Lees / schrijf Lock Basisklasse voor PERL ETHREADS |
Download nu |
Thread :: Resource :: rwlock Rangschikking & Samenvatting
- Vergunning:
- Perl Artistic License
- Naam uitgever:
- Dean Arnold
- Uitgever website:
- http://search.cpan.org/~darnold/
Thread :: Resource :: rwlock Tags
Thread :: Resource :: rwlock Beschrijving
Lees / schrijf-lock basisklasse voor Perl ithreads Discussie :: Resource :: RWLock is een Perl module die zowel een erfelijke abstracte klasse, evenals een concrete implementatie object biedt, om gelijktijdige toegang tot hulpbronnen te reguleren. Meerdere gelijktijdige threads lezer kan Thread :: Resource :: RWLock readlock tegelijkertijd vasthouden, terwijl een schrijver draad regelt de blokkering exclusively.New lezer draden worden geblokkeerd indien schrijver nog wacht om de vergrendeling te verkrijgen. De read slot wordt toegekend nadat alle hangende schrijf beveiliging verzoeken released.SYNOPSIS pakket LockedObject geweest; Gebruik draden; Gebruik draden :: gedeeld; Gebruik Thread :: Queue :: QUEUEABLE; Gebruik Thread :: Resource :: RWLock; gebruiksbasis qw (Thread :: Queue :: QUEUEABLE Thread :: Resource :: RWLock); subnieuw {mijn $ klasse = verschuiving; mijn% obj: gedeelde = (); mijn $ zelf = zegenen \% obj, $ klasse; # # Init de grendelorganen # $ zelf-> Thread :: Resource :: RWLock :: sieren (); return $ self; } Sub verlossen {mijn ($ klasse, $ zelf); return zegen $ zelf, $ klasse; } Pakketnaam; Gebruik draden; Gebruik draden :: gedeeld; Gebruik Thread :: Queue :: Duplex; Gebruik LockedObject; # # In schroefdraad app: # mijn $ READ_WRITE = LockedObject-> new (); mijn $ TQD = Thread :: Queue :: Duplex-> new (); mijn $ thrdA = threads-> new (\ read_thread, $ TQD); mijn $ thrdB = threads-> new (\ write_thread, $ TQD); # # Passeren het gezamenlijke object naar elke thread # $ tqd-> enqueue_and_wait ($ READ_WRITE); $ Tqd-> enqueue_and_wait ($ READ_WRITE); # Reader sub read_thread {mijn $ TQD = shift; mijn $ request = $ tqd-> dequeue (); $ Tqd-> reageren ($ aanvraag -> , 1); mijn $ obj = $ aanvraag -> ; mijn $ locktoken = $ obj-> read_lock (); # # Doen sommige dingen # $ obj-> unlock ($ locktoken); } # Writer sub write_thread {mijn $ TQD = shift; mijn $ request = $ tqd-> dequeue (); $ Tqd-> reageren ($ aanvraag -> , 1); mijn $ obj = $ aanvraag -> ; # # Eerste pak een readlock # mijn $ locktoken = $ obj-> read_lock (); # # Doen sommige dingen, vervolgens een upgrade naar een writelock # $ obj-> WRITE_LOCK (); # # Doen sommige dingen, dan unlock # $ obj-> unlock ($ locktoken); } Vereisten: · Perl
Thread :: Resource :: rwlock Gerelateerde software