2009-07-08 4 views
11

Possible en double:
How do I specify the equivalent of volatile in VB.net?équivalent volatils dans VB.NET

Quel est le mot-clé VB.NET équivalent de C# "volatile"?

S'il n'y a pas de mot-clé, quel mécanisme est l'équivalent?

+2

Puis-je vous demander pourquoi vous voulez savoir? La plupart des gens n'essaient pas d'écrire des algorithmes multithread sans verrou dans VB. –

+0

@EricLippert, excusez-moi si je semble impoli, mais pourquoi demandez-vous "pourquoi vous voulez savoir"? Si la plupart des gens n'ont aucun désir d'atteindre les étoiles, ceux qui essaient de le faire devraient-ils arrêter? Personnellement, je fais beaucoup de développement en VB et je peux dire que cette langue est loin devant la plupart des langues. – Dima

+2

@Dima: Parce qu'à l'époque j'étais sur l'équipe de conception pour C# et en contact quotidien avec l'équipe de conception VB. En sollicitant la rétroaction directement auprès des utilisateurs réels ayant des besoins réels, et en déterminant quels sont ces besoins dans leur contexte, je pourrais exprimer de façon plus précise et précise ces besoins d'utilisateurs à mes collègues des équipes de conception pour les deux langues. Je suis heureux d'entendre que VB répond à vos besoins; c'est une langue délicieuse et décalée. –

Répondre

12

Il n'y a pas d'équivoque avec le mot clé volatile C# dans VB.NET. Volatile en C# s'assure que le compilateur gère les choses différemment lors de la génération de l'IL, mais le compilateur VB.NET n'a pas cette option.

Vous pouvez travailler autour de cette façon (taken from this blog post):

Function VolatileRead(Of T)(ByRef Address As T) As T 
    VolatileRead = Address 
    Threading.Thread.MemoryBarrier() 
End Function 

Sub VolatileWrite(Of T)(ByRef Address As T, ByVal Value As T) 
    Threading.Thread.MemoryBarrier() 
    Address = Value 
End Sub 
1

En fonction de ce type de variable que vous utilisez je suggère d'utiliser

System.Threading.Thread.VolatileRead()

System.Threading.Thread.VolatileWrite()

Aussi System.Threading.Interlocked contient des trucs sympa ...