Quiz Maggio 2003
scrivere un metodo synchronize(unMetodo)
che provveda a creare al posto nostro un sistema per
l’accesso concorrente ad un metodo, sul modello della keyword
‘synchronized’ in java.
In sostanza deve essere possibile fare una cosa del genere
def metodo
..
end
synchronize (:metodo)
- o synchronize(methodObject)
(1..10).each {
Thread.new { chiamata a metodo}
}
insomma, i thread non devono preoccuparsi di attivare/rilasciare lock nell’accedere al metodo.
Ma non finisce qui :)
Maggior gloria a un’ulteriore versione di synchronize:
synchronize(unaClasse)
che restituisca una classe con tutti i metodi sincronizzati, (possibilmente anche i metodi d’istanza). Ad esempio: SyncArray=synchronize(Array)
SyncArray