C# java'senkronize anahtar kelime s?
Yok c# java kendi sürümü "" anahtar kelime? senkronize var
I. e. java gibi bir iÅŸlevi, bir nesne ya da bir kod bloÄŸu ya: belirtilebilir
public synchronized void doImportantStuff() {
// dangerous code goes here.
}
ya
public void doImportantStuff() {
// trivial stuff
synchronized {
// dangerous code goes here.
}
}
CEVAP
Birinci sınıflar en güvenli iş parçacığı olması gerekir. YAGNI: aslında sadece sen (ve sınamak) kullanacaksın biliyorum iplik-güvenlik uygulamak.
Yöntem düzey şeyler için, [MethodImpl] vardır:
[MethodImpl(MethodImplOptions.Synchronized)]
public void SomeMethod() {/* code */}
Bu da erişenleri (özellikler ve olaylar için kullanılabilir:
private int i;
public int SomeProperty
{
[MethodImpl(MethodImplOptions.Synchronized)]
get { return i; }
[MethodImpl(MethodImplOptions.Synchronized)]
set { i = value; }
}
Tarla gibi olayları unutmayınotomatik uygulanan özellikler . varsayılan olarak senkronize, ^em>değildir:
public int SomeProperty {get;set;} // not synchronized
public event EventHandler SomeEvent; // synchronized
Şahsen, this ya karşı olan typeof(Foo) - en iyi uygulamaları kilitler MethodImpl uygulanması sevmiyorum. Tercih edilen seçenek, kendi kilitleri kullanmak için:
private readonly object syncLock = new object();
public void SomeMethod() {
lock(syncLock) { /* code */ }
}
Not Bu iş için saha gibi olaylar, kilitleme uygulamasıdır bağımlı derleyici; eski Microsoft Derleyiciler bir lock(this) / lock(Type) - ancak, in more recent compilers it uses Interlocked güncellemeler - iplik-güvenli olmayan kötü bir parça.
Bu daha ayrıntılı bir kullanım sağlar veMonitor.Wait/Monitor.Pulse vb kullanımı konuları arasında iletişim kurmasını sağlar.
İlgili blog entry (daha sonra revisited).

Java mı anahtar kelime iddia, ne yapar...
Hiç Java geçici anahtar kelime kullanı...
Yerli için Java anahtar kelime nedir?...
Neden anahtar kelime "son" J...
Objective-C's "örneğin,"...