2016-02-16 10:53 GMT+01:00 alessandro medici <alexxandro.med...@gmail.com>: > L'esempio che hai fatto non è quello che intendevo io
Quale esempio? http://wiki.news.nic.it/QuotarBene > : accedi a due voci > contemporaneamente dello stesso dizionario nello stesso thread. Comunque > proverò. > Sicuramente negli esempi che ho fatto l'accesso era da thread differenti, altrimenti non avrei potuto far vedere le possibili conseguenze della incorretta sincronizzazione. > In ogni caso a me risulta che Gil rilascia i thread ogni 'gruppo' di > istruzioni bytecode, non ogni singola istruzione. È un dettaglio implementativo e, come tale, non ci farei troppo affidamento. Già la presenza del GIL è un dettaglio implementativo, e probabilmente molte applicazioni fallirebbero su IronPython o Jython, ma almeno il GIL è presente sulle implementazioni maggiori di Python: CPython e PyPy. Vedi anche https://docs.python.org/2/library/sys.html#sys.setcheckinterval > sovrascrivere una voce di un dizionario è, per quel che riguarda python, una > istruzione atomica. La cosa è evidente se cerchi di scrivere sullo stesso > terminale da ogni thread: quel che appare è un guazzabuglio confuso ma è > anche evidente dal risultato degli script che ho scritto. > > O, quantomeno, la cosa funziona: mi son fatto diversi script in cui ogni > thread modifica/usa/cancella/trattiene una voce (con un lock non atomico di > controllo di accesso) in un dizionario e gli altri fanno quello che vogliono > sulle ALTRE voci con le stesse regole. Ogni voce punta ad una voce univoca > di un altro dizionario senza lock che viene cancellata/riscritta. > Magari se posti uno script (su gist o un pastebin) è la volta buona che capisco cosa intendi con locked item. A me risulta che l'unica cosa che puoi lockare è un dizionario, non un item al suo interno. Ciao Manlio _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python