Questo ho letto dalla descrizione threads::shared
:Perl condiviso variabili atomicità e visibilità
Per impostazione predefinita, le variabili sono private di ogni thread, e ogni thread appena creato ottiene una copia privata di ogni variabile esistente. Questo modulo permette di condividere le variabili tra le varie discussioni ... (more)
Diciamo che ho una variabile condivisa in questo modo:
my $var :shared;
$var = 10;
Questo significa che la variabile esiste solo una volta per tutti i fili che creo .
Ora circa atomicità e la visibilità:
Se thread_A assegna un nuovo valore diciamo 11:
$var = 11;
E 'garantito che thread_B (e tutti gli altri thread che potrebbe aver creato) vedrà il valore 11? E l'incarico è eseguito atomicamente?
Oppure abbiamo in Java come prima cosa acquisire un blocco e quindi eseguire l'assegnazione e rilasciare il blocco. E solo i thread che utilizzano lo stesso lock sono garantiti per vedere il valore aggiornato?
Oppure questo si comporta come variabili primitive volatili in Java?