C#

casting

Casting in C#

Il cast (in particolare il downcasting) permette di esplicitare il tipo di una variabile a quello di una classe figlia o sotto-figlia. Il classico esempio è castare una variabile di tipo object al suo tipo effettivo. Il cast è una operazione comunissima che viene effettuata

semaphoreslim

SemaphoreSlim 101

SemaphoreSlim è una classe che permette la sincronizzazione di n thread che hanno una risorsa (scarsa) condivisa limitandone l’uso ad un numero massimo.

interlocked

Interlocked 101

La sincronizzazione dei thread è un elemento fondamentale nella programmazione asincrona, ne ho infatti parlato in vari post. La soluzione più versatile è sicuramente utilizzare il costrutto lock ma, in alcuni casi, l’utilizzo dei metodi della classe Interlocked permette di ottenere performance decisamente migliori. Questa

Come testare gli eventi

Testare che degli eventi siano stato effettivamente lanciati in C# non è immediato. Tipicamente è possibile testare che un evento venga lanciato aspettando un ManualResetEvent che viene settato in un listener dell’evento stesso. Questo metodo funziona ma risulta un po’ macchinoso; Fluent Assertion risolve il

Quanto sono veloci le reflection?

La reflection permette al codice di poter istanziare classi o chiamare metodi privati senza passare per la classe stessa; capire quanto queste siano veloci permette di scrivere codice più performante. E’ possibile utilizzare le reflection per creare una istanza di un oggetto di un determinato

Naming dei test

Per lo sviluppo di codice di buona qualità è necessario associare il proprio codice a dei test, che siano unit test, integration test o end to end test. Uno dei primi problemi a cui si incorre è capire come effettuare il naming del progetto di

ManualResetEvent vs ManualResetEventSlim

Dal .NET 4 è stato introdotto un nuovo tipo di ManualResetEvent chiamato ManualResetEventSlim che permette di avere delle performance migliori qualora il tempo di blocco atteso sia molto breve. Questo miglioramento viene effettuato effettuando dello spinning per un determinato numero di operazioni prima di effettuare

SpinLock e SpinWait

Questo post è un seguito al mio precedente post sul blocking e spinning e vuole essere un piccolo approfondimento sulle nuove struct SpinLock e SpinWait di NET 4. Come ho scritto nel post, in caso di attese molto brevi lo spinning può essere preferibile al

Blocking vs Spinning

Capire come sincronizzazione dei thread in C# è indispensabile per poter costruire applicazioni veloci e thread-safe; e in questo contesto è necessario avere chiara la differenza tra blocking e spinning. Spesso può essere utile mettere in pausa un Thread in modo da aspettare che una

Codice Pragmatico

Contatti

Per informazioni, dubbi o consulenze non esitate a contattarmi.

Lascia un messaggio

Ricevi le ultime news

Iscrivi alla newsletter

Solo articoli interessanti, promesso ;)