Tópico :: Recurso :: RWLock

Classe Base de Leitura / Write para Perl Ithreads
Baixe Agora

Tópico :: Recurso :: RWLock Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • Perl Artistic License
  • Preço:
  • FREE
  • Nome do editor:
  • Dean Arnold
  • Site do editor:
  • http://search.cpan.org/~darnold/

Tópico :: Recurso :: RWLock Tag


Tópico :: Recurso :: RWLock Descrição

Leitura / Write Bloquear classe base para Perl Ithreads Tópico :: Resource :: Rwlock é um módulo Perl que fornece uma classe abstrata herdável, bem como uma implementação de objeto concreta, para regular o acesso concorrente aos recursos. Múltiplos fios de leitores simulados podem realizar um thread :: Rwlock Readlock ao mesmo tempo, enquanto um único thread do gravador mantém o bloqueio exclusivamente.New Reader Threads é bloqueado se algum escritor estiver esperando para obter o bloqueio. O bloqueio de leitura é concedido depois que todas as solicitações pendentes de bloqueio de gravação foram lançadas. LockedObject Use tópicos; Use tópicos :: Compartilhado; Use Thread :: Queue :: Queuable; Use Thread :: Recurso :: RWLock; Use Base QW (Thread :: File :: Queueable Thread :: Recurso :: RWLock); sub new {my $ classe = turno; meu% obj: compartilhado = (); Meu $ auto = abençoe \% obj, $ classe; # # Init os membros de travamento # $ self-> thread :: recurso :: rwlock :: adorn (); retornar $ auto; } Sub Resgate {MEU ($ CLASSE, $-auto); retorno abençoe $ auto, $ classe; } pacote principal; Use tópicos; Use tópicos :: Compartilhado; Use Thread :: Queue :: Duplex; use o bloqueiobject; # # em app roscado: # meu $ read_write = bloqueiobject-> novo (); Meu $ TQD = Thread :: File :: Duplex-> Novo (); Meu $ Thrda = Threads-> Novo (\ Read_Thread, $ tqd); Meu $ Thrdb = Threads-> Novo (\ Write_Thread, $ tqd); # # Passe o objeto compartilhado para cada linha # $ tqd-> enqueue_and_wait ($ read_write); $ tqd-> enqueue_and_wait ($ read_write); # Leitor sub lead_thread {my $ tqd = shift; Meu pedido $ = $ tqd-> dequeue (); $ tqd-> responder (pedido $ -> , 1); meu pedido $ obj = $ -> ; Meu $ LockToken = $ Obj-> Read_lock (); # # faça algumas coisas # $ obj-> desbloquear ($ locktaken); } # Escritor subwite_thread {my $ tqd = shift; Meu pedido $ = $ tqd-> dequeue (); $ tqd-> responder (pedido $ -> , 1); meu pedido $ obj = $ -> ; # # primeiro pegue um Readlock # Meu $ LockToken = $ Obj-> Read_lock (); # # Faça algumas coisas, então atualize para um writelock # $ obj-> write_lock (); # # fazer algumas coisas, em seguida, desbloquear # $ obj-> desbloquear ($ locktaken); } Requisitos: · Perl.


Tópico :: Recurso :: RWLock Software Relacionado