giovedì 26 giugno 2008

Synchronized in C++

Una semplice idea per implementare qualcosa di simile alla synchonized di Java in c++:
definiamo una classe base Synchronizable:
class Synchronizable
{


friend class
Synchonizer;

CCriticalSection theLock;
/* O qualunque implementazione di un oggetto del genere fornito dalla libreria */


protected
:

void
Lock() { theLock.Lock(); }
void
Unlock() { theLock.Unlock(); }

};





e poi una classe Synchonizer:

class Synchronizer
{


Synchronizable *s;
public
:
Synchronizer(Synchronizable *_s): s(_s)
{
s->Lock(); }

~
Synchronizer() { s->Unlock(); }
};



A questo punto, sarà possibile implementare delle classi derivate da Synchronizable, e laddove si vogliano sincronizzare le funzioni membro basterà:

void MyClass::doSomething()
{


Synchronizer s(this);
.....
}




All'uscita dal metodo (sia attraverso una return che a fronte dell'innalzamento di un'eccezione), il distruttore di s effettuerà l'Unlock.
Inoltre è possibile usare questa tecnica anche all'interno di scope diversi dal corpo dell'intero metodo:

void MyClass::doSomething()
{
...
{


Synchronizer s(this);
// questo scope è in critical section
....
}
...
// qui siamo fuori dalla cs
}



Ovviamente questa tecnica non impedisce l'utilizzo "manuale" dei metodi protetti Lock() e Unlock()...

mercoledì 18 giugno 2008

Wine 1.0

Il Wine team è felice di annunciare la versione 1.0 di Wine! Dopo 15 anni di sviluppo ora abbiamo la prima stable!
Su http://appdb.winehq.org c'è una bella listona degli applicativi funzionanti.
Mi aspetto che anche ReactOS faccia un bel salto in avanti...

martedì 17 giugno 2008

Rage live in Modena 2008


C'ero anch'io!
Fantastico... veramente grandi!
Cazzi vostri che ve lo siete persi! ahahahh

lunedì 2 giugno 2008

Energy saving computers

Sembra che il tema dell'anno, almeno per quanto riguarda il settore IT, sia il risparmio energetico; non si fa altro che parlare di server ad alta efficienza, CPU a basso consumo, addirittura qualcuno introduce il software che fa risparmiare energia (ho letto di un deframmentatore per windows che a detta dell'azienda che lo commercia, consente un risparmio energetico per grosse infrastrutture IT ottimizzando l'accesso al disco..).
Salvo poi vedere obbrobrietà tipo aziende che allestiscono "sale server" in cui stivare un mobile rack con 2 o 3 macchine server ultra-striminzite da 10k euro (di cui 3k solo per l'ingenierizzazione dei flussi di raffreddamento) e poi montare un mega impianto di climatizzazione... alla faccia del risparmio! Metti 3 server con tradizionali case tower sparsi per gli uffici sfruttando la climatizzazione degli uffici stessi, e valuta poi il risparmio energetico...
In ogni caso, interessante questo post sul formum di HWUpgrade: come dotarsi di un "mulo" da tenere acceso 24/7 selezionando componenti a basso costo-consumo-rumore.
E poi qualche componente:

Il futuro è nell'uso responsabile, intelligente ed efficiente dell'energia. Amen.