non quello del pc ovviamente :-)
Dopo aver conosciuto
di persona e scambiato alcune parole con Luca Minudel (è stato un vero
piacere), e spinto anche dalle parole
di Lorenzo Barbieri (uno dei pochi con cui non mi è riuscito di
presentarmi, lo farò la prossima volta di sicuro), mi sono deciso a
scriver di più riguardo le mie esperienze di programmazione.
OK cominciamo subito oggi con una breve informazione per chi ha a che fare
con il multithreading. per promuovere il disaccoppiamento e la thread safety di
componenti .net è possibile incapsulare un monitor all'interno di un metodo di
una classe come segue:
public class MyClass
{
public void DoSomething()
{
lock(this)
{
/*Method code*/
}
}
}
ho scoperto
oggi che è possibile utilizzare una forma più elegante tramite un attributo:
public class MyClass
{
[MethodImpl(MethodImplOptions.Synchronized)]
public void DoSomething()
{
/*Method code*/
}
}
è possibile ovviamente decorare anche metodi non void, metodi statici e
proprietà:
using System.Runtime.CompilerServices
public class MyClass
{
private int m_Num = 0;
public int Number
{
[MethodImpl(MethodImplOptions.Synchronized)]
get
{
return m_Num;
}
[MethodImpl(MethodImplOptions.Synchronized)]
set
{
m_Num = value;
}
}
}
ci sarebbe molto da dire su questi che vengono chiamati metodi soncronizzati
comparandoli con i domini di sincronizzazione, ma non credo di essere in grado
di farlo in maniera compiuta!
saluti
MesBlog powered by IMHO