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,"...