Sincronizzazione tra thread

mercoledì 23 maggio 2007 - 15.48

Abdujaparov Profilo | Newbie

Salve a tutti,
ho un problema con i thread . Vorrei accedere ad un oggetto e manipolare una variabile condivisi da più thread. Come posso sincronizzare l'accesso all' oggetto ed alla variabile in modo che i thread non cerchino di accedergli contemporaneamente per modificare i dati?? Ho letto qualcosa in merito ai Lock ma non riesco a capirici molto anche perchè subito dopo si è parlato della classe monitor ed a questo punto mi perso del tutto. Pensavo, se non ho capito male, che per modificare un oggetto/dato dovrei eseguire questa procedura:

lock(this)
{
a+=24;
oggetto.set(qualcosa che gli passo);
}

In questo modo è corretto?? Cosa rischio di trascurare in questo caso??


Grazie 1000

ciao

Fantazma Profilo | Junior Member

>Come posso
>sincronizzare l'accesso all' oggetto ed alla variabile in modo
>che i thread non cerchino di accedergli contemporaneamente per
>modificare i dati?? Ho letto qualcosa in merito ai Lock ma non
>riesco a capirici molto anche perchè subito dopo si è parlato
>della classe monitor ed a questo punto mi perso del tutto.

Ciao, l'accesso ad oggetti condivisi fra i thread è cosa da trattare con attenzione. Quello che hai letto è giusto, un modo per far in modo che i thread accedano uno la volta ad un oggetto è il synclock. La sua differenza con l'oggetto monitor è una maggior flessibilità di quest'ultimo a fronte però di una struttura del codice leggermente più complessa.

>Pensavo,
>se non ho capito male, che per modificare un oggetto/dato dovrei
>eseguire questa procedura:
>
>lock(this)
>{
>a+=24;
>oggetto.set(qualcosa che gli passo);
>}
>

La procedura è corretta... se vuoi trovi informazioni qui: http://msdn2.microsoft.com/it-it/library/c5kehkcz(VS.80).aspx

Ciao!!!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5