«thread-safety» etiketlenmiş sorular

Bir kod parçası, veri yapılarını yalnızca bu kodun birden çok iş parçacığı tarafından tutarlı bir şekilde yürütülmesine izin verecek şekilde işlerse, iş parçacığı açısından güvenlidir. Bir kod iş parçacığı açısından güvenli, koşullu olarak güvenli (karşılıklı dışlama gerekir) veya güvensiz (yalnızca bir iş parçacığı tarafından güvenli bir şekilde kullanılabilir) olabilir.

16
Koleksiyon değiştirildi; numaralandırma işlemi yürütülemeyebilir
Hata ayıklayıcı eklendiğinde, bu görünmüyor çünkü bu hatanın altına alamıyorum. Kod aşağıdadır. Bu, bir Windows hizmetindeki bir WCF sunucusudur. NotifySubscribers yöntemi, bir veri olayı olduğunda (rastgele aralıklarla, ancak çok sık değil - günde yaklaşık 800 kez) hizmet tarafından çağrılır. Bir Windows Forms istemcisi abone olduğunda, abone kimliği abone sözlüğüne eklenir …


8
Kilit tam olarak nasıl çalışır?
İş parçacığı güvenli olmayan nesneleri kullanmak için kodu böyle bir kilit ile sarın görüyorum: private static readonly Object obj = new Object(); lock (obj) { // thread unsafe code } Birden fazla iş parçacığı aynı koda eriştiğinde ne olur (bir ASP.NET web uygulamasında çalıştığını varsayalım). Kuyrukta mı? Eğer öyleyse ne …

3
RxJava zamanlayıcılar için kullanım örnekleri
RxJava'da seçim yapabileceğiniz 5 farklı zamanlayıcı vardır : instant () : Geçerli iş parçacığında hemen çalışma yürüten bir Zamanlayıcı oluşturur ve döndürür. trampoline () : Geçerli iş tamamlandıktan sonra yürütülecek geçerli iş parçacığında kuyrukları çalıştıran bir Zamanlayıcı oluşturur ve döndürür. newThread () : Her iş birimi için yeni bir İş …

7
Yeniden giriş işlevi tam olarak nedir?
Çoğu ait zamanlarda , reentrance tanımı alıntı yapıldığı Vikipedi : Bir bilgisayar programı veya rutini, önceki çağrısı tamamlanmadan önce güvenli bir şekilde yeniden çağrılabiliyorsa (yani eşzamanlı olarak güvenli bir şekilde çalıştırılabilir) evresel olarak tanımlanır . Tekrar girebilmek için bir bilgisayar programı veya rutini: Statik (veya global) sabit olmayan veri içermemelidir. …


7
Queue.Queue vs. collections.deque
Birden çok iş parçacığı içine şeyler koyabilirsiniz ve birden çok iş parçacığı okuyabilir bir kuyruk gerekir. Python'un en az iki kuyruk sınıfı vardır: Queue.Queue ve collections.deque, birincisi ikincisini dahili olarak kullanıyor. Her ikisi de belgelerde iş parçacığı açısından güvenli olduğunu iddia ediyor. Ancak, Sıra belgeleri şunları da belirtir: collections.deque, kilitleme …

9
InvokeRequired kod modelini otomatikleştirme
Acı ne sıklıkta olay olay güdümlü GUI kodunda aşağıdaki kod desenini yazmak için ne kadar sık ​​gerektiğini fark var private void DoGUISwitch() { // cruisin for a bruisin' through exception city object1.Visible = true; object2.Visible = false; } dönüşür: private void DoGUISwitch() { if (object1.InvokeRequired) { object1.Invoke(new MethodInvoker(() => { …

4
Bir Yöntemi İplik Güvenli Kılan Nedir? Kurallar neler?
Bir yöntemi iş parçacığı açısından güvenli kılan şeylerle ilgili genel kurallar / yönergeler var mı? Muhtemelen bir milyon bir defalık durum olduğunu anlıyorum, ama genel olarak ne olacak? Bu kadar basit mi? Bir yöntem yalnızca yerel değişkenlere erişiyorsa, iş parçacığı için güvenlidir. Öyle mi? Bu statik yöntemler için de geçerli …
156 c#  thread-safety 

5
ConcurrentHashMap değerleri iş parçacığını yineleme güvenli mi?
ConcurrentHashMap için javadoc'ta şu: Alım işlemleri (get dahil) genellikle engellenmez, bu nedenle güncelleme işlemleriyle (put ve remove dahil) çakışabilir. Alımlar, en son tamamlanan güncelleme işlemlerinin başlangıcında tutulan sonuçlarını yansıtır. PutAll ve clear gibi toplu işlemler için, eşzamanlı alımlar yalnızca bazı girişlerin eklenmesini veya kaldırılmasını yansıtabilir. Benzer şekilde, Yineleyiciler ve Numaralandırmalar …

5
.NET Framework'te Eşzamanlı HashSet <T>?
Aşağıdaki sınıfa sahibim. class Test{ public HashSet&lt;string&gt; Data = new HashSet&lt;string&gt;(); } Alan "Veri" farklı iş parçacıklarını değiştirmek gerekir, bu yüzden geçerli iş parçacığı güvenli uygulama hakkında bazı görüşler istiyorum. class Test{ public HashSet&lt;string&gt; Data = new HashSet&lt;string&gt;(); public void Add(string Val){ lock(Data) Data.Add(Val); } public void Remove(string Val){ lock(Data) …


5
Statik sınıf değişkenlerini değiştirmezlerse, senkronize edilmemiş statik yöntemler iş parçacığı güvenli midir?
Sana olan statik bir yöntemi varsa merak değil senkronize fakat yok değil statik değişkenlerini değiştirmek o evreli mı? Ya yöntem kendi içinde yerel değişkenler yaratırsa? Örneğin, aşağıdaki kod iş parçacığı için güvenli midir? public static String[] makeStringArray( String a, String b ){ return new String[]{ a, b }; } Dolayısıyla, …

8
! = Kontrol ipliği güvenli mi?
Birden fazla işlem i++içerdiğinden, bu tür bileşik işlemlerin iş parçacığı için güvenli olmadığını biliyorum . Ancak referansın kendisiyle kontrol edilmesi güvenli bir işlem midir? a != a //is this thread-safe Bunu programlamaya ve birden çok iş parçacığı kullanmaya çalıştım ama başarısız olmadı. Sanırım makinemde yarışı simüle edemedim. DÜZENLE: public class …

4
Gson örneğini model çekirdeğinde statik bir alan olarak kullanmak yeniden kullanılabilir mi (yeniden kullanım)?
İşte benim uyguladığım model: public class LoginSession { private static final Gson gson = new Gson(); private String id; private String name; private long timestamp; public LoginSession(String id, String name) { this.id = id; this.name = name; this.timestamp = System.currentTimeMillis(); } public String toJson() { return gson.toJson(this); } public static …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.