il modulo di threading in Python fornisce due tipi di blocchi: un blocco comune e un blocco rientrante. Mi sembra che, se ho bisogno di un lucchetto, preferirei sempre RLock over the Lock; principalmente per prevenire situazioni di deadlock.RLock è un valore predefinito rispetto al blocco?
Oltre a questo, vedo due punti, quando a preferire un blocco su un RLock:
- RLock ha una più complessa struttura interna e possono pertanto avere prestazioni peggiori.
- A causa di qualche motivo, voglio impedire una ricorrenza del thread attraverso il blocco.
Il mio ragionamento è corretto? Puoi indicare altri aspetti?
# 2 è improbabile che sia una buona ragione; l'unico caso in cui non è un deadlock garantito è se la ricorsione acquisisce non-blocking e ha un ragionevole corso d'azione quando non può verificare che detenga il lock. E # 1 non si applica su Python 3.2+. Un motivo legittimo per preferire 'Lock' è quando il lock deve essere rilasciato in un thread diverso da quello che lo ha acquisito. – ShadowRanger