Ciao a tutti, vi disturbo per farvi un'altra domanda sulla safe di questo scenario.
Scenario : nella classe A ci sono diversi task che girano dentro un metodo "Pippo". Prima di dare lo start ad ogni task viene creato al volo un nuovo oggetto (object obj = new object();) che poi verrà passato come parametro a "Pippo";
Ad un certo punto, questi task chiamano il metodo "Pluto" sempre della classe A.
Nel metodo "Pluto" si accede al membro di classe A "view", istanza di un'altra classe B; vi si accede facendo una chiamata ad un suo metodo pubblico view.myMetod(boll param1, string param2, object param3)
Il metodo "Pluto" non presenta meccanismi di lock, ma tuttavia esso è presente come prima istruzione nel metodo view.myMetod(boll param1, string param2, object param3.....);
La mia domanda è : posso affermare di essere in una condizione di thread safety ?
Grazie.
La classe "A", la classe "B", le chiamate e gli oggetti
public class A: IControllerSetup
{
private IViewStation _view;
public void Start() //
{ //facciamo finta di avere una lista di
Task e per ogni task
object myobj = new object();
Task.Run(()=>Pippo(myobj))
}
public void Pippo(object MyObj)
{
//...some code here
Pluto(MyObj);
}
}
private void Pluto (object myObj)
{
//some code here
object prova = new object();
_view.MyMetod("xxxx",false,false,prova, myObj);
}
public class B
{
private static object readonly locker = new object();
public void MyMetod(string testo,bool p, bool t, object
obj1, object obj2)
{
lock(locker)
//...some code here
}
}