2010-12-10 37 views
0

La question est facile, supposons que je:C# verrouillage Threading pour 2 champs d'une classe

class MyClass 
{ 
    object myObj1 
    object myObj2 
} 

Thread1(MyClass c) 
{ 
    DoALotOnMyObj1(c.myObj1); 
} 

Thread2(MyClass c) 
{ 
    DoALotOnMyObj2(c.myObj2); 
} 

Dois-je utiliser des serrures dans ce cas, même si je suis tout à fait sûr que les deux fils utiliseront seulement myObj1 (ou 2 selon le fil) et pas l'autre champ?

+1

Est-ce une faute de frappe? Le thread 2 n'est-il pas censé faire DoALotOnMyObj2 (c.myObj2); – LukeH

+0

Oui c'est une faute de frappe, merci pour avis –

+0

Vous avez seulement besoin d'un verrou si myObj1 et myObj2 interagissent d'une manière qui pourrait causer des conflits lorsqu'il est utilisé simultanément. Si les deux objets sont isolés les uns des autres, vous êtes en sécurité. –

Répondre

3

Non, vous ne le feriez pas.

1

Le concept d'un verrou est de s'assurer que lorsque vous modifiez une ressource dans un thread, les autres threads n'y accèdent pas tant que le verrou n'est pas libéré.

Dans votre cas, vous ne partagez aucune ressource entre les deux threads, vous n'avez donc pas besoin de verrou.