Non ricorsivo vs lucchetti ricorsivi?

1

Sto pensando di usare serrature non ricorsive; Ho trovato che hanno una superiorità delle prestazioni rispetto ai blocchi ricorsivi standard (ad esempio SimpleRWSync). Ho utilizzato principalmente sezioni critiche, ma in ambienti altamente threaded, il blocco stava producendo ritardi significativi.

  1. Quali sono i vantaggi e / o le insidie?
  2. Le azioni non ricorsive rendono la codifica più difficile?
posta Umair Ahmed 12.02.2014 - 14:50
fonte

1 risposta

1

Il vantaggio dei blocchi non ricorsivi è che sono più veloci, a causa del tracciamento e del controllo ridotti per quale thread è in possesso del blocco. Lo svantaggio è che si verificherà un deadlock se si tenta di bloccarlo nuovamente all'interno dello stesso thread.

Tecnicamente, sono più difficili da usare, perché l'onere è sul programmatore di evitare di bloccarlo in modo ricorsivo. In pratica, i programmatori dovrebbero già preoccuparsi di ciò. Il più delle volte, tenere una serratura in modo ricorsivo significa che la stai tenendo troppo a lungo. Si desidera che il tempo in cui si tiene un lucchetto sia il più piccolo possibile e non è possibile considerare il più piccolo possibile chiamate di funzione di profondità sconosciuta. Potrebbe essere un po 'di lavoro in più, ma il refactoring del codice per poter usare i lock non ricorsivi ne vale quasi sempre la pena.

    
risposta data 12.02.2014 - 19:38
fonte

Leggi altre domande sui tag