Diciamo che una classe ha un public int countercampo a cui accedono più thread. Questo intè solo incrementato o decrementato. Per incrementare questo campo, quale approccio dovrebbe essere usato e perché? lock(this.locker) this.counter++;, Interlocked.Increment(ref this.counter);, Cambia il modificatore di accesso di countera public volatile. Ora che ho scoperto volatile, ho …
Comprendo le differenze tra blocco ottimistico e pessimistico. Ora qualcuno potrebbe spiegarmi quando avrei usato uno dei due in generale? E la risposta a questa domanda cambia a seconda che io stia usando o meno una procedura memorizzata per eseguire la query? Ma solo per verificare, ottimista significa "non bloccare …
Vedo che per l'utilizzo di oggetti che non sono thread-safe, avvolgiamo il codice con un lucchetto come questo: private static readonly Object obj = new Object(); lock (obj) { // thread unsafe code } Quindi cosa succede quando più thread accedono allo stesso codice (supponiamo che sia in esecuzione in …
La documentazione MSDN dice questo public class SomeObject { public void SomeOperation() { lock(this) { //Access instance variables } } } è "un problema se è possibile accedere all'istanza pubblicamente". Mi chiedo perché? È perché il blocco si terrà più a lungo del necessario? O c'è qualche motivo più insidioso?
Vedendo varie domande relative al blocco e (quasi) sempre trovando il termine "loop a causa di risvegli spuri" 1 Mi chiedo, qualcuno ha sperimentato un tale tipo di risveglio (supponendo ad esempio un ambiente hardware / software decente)? So che il termine "spurio" non significa una ragione apparente, ma quali …
Immagino che la vera domanda sia: Se non mi interessano le letture sporche, l'aggiunta del suggerimento with (NOLOCK) a un'istruzione SELECT influirà sulle prestazioni di: l'attuale istruzione SELECT altre transazioni rispetto alla tabella indicata Esempio: Select * from aTable with (NOLOCK)
Se ho 2 metodi sincronizzati nella stessa classe, ma ognuno accede a variabili diverse, 2 thread possono accedere a quei 2 metodi contemporaneamente? Il blocco si verifica sull'oggetto o diventa specifico come le variabili all'interno del metodo sincronizzato? Esempio: class X { private int a; private int b; public synchronized …
POSIX consente ai mutex di essere ricorsivi. Ciò significa che lo stesso thread può bloccare lo stesso mutex due volte e non si bloccherà. Ovviamente deve anche sbloccarlo due volte, altrimenti nessun altro thread può ottenere il mutex. Non tutti i sistemi che supportano pthread supportano anche i mutex ricorsivi, …
Qualcuno può spiegare la differenza tra: lock (someobject) {} Usando Mutex Usando il semaforo Utilizzando Monitor Utilizzo di altre classi di sincronizzazione .Net Non riesco proprio a capirlo. Mi sembra che i primi due siano uguali?
Quando si scrivono applicazioni multi-thread, uno dei problemi più comuni riscontrati sono i deadlock. Le mie domande alla community sono: Che cos'è un deadlock? Come li rilevi? Li gestisci? E infine, come evitare che si verifichino?
Ho la seguente classe. class Test{ public HashSet<string> Data = new HashSet<string>(); } Devo cambiare il campo "Dati" da thread diversi, quindi vorrei alcune opinioni sulla mia attuale implementazione thread-safe. class Test{ public HashSet<string> Data = new HashSet<string>(); public void Add(string Val){ lock(Data) Data.Add(Val); } public void Remove(string Val){ lock(Data) …
In un linguaggio di basso livello (C, C ++ o altro): ho la scelta tra avere un mucchio di mutex (come quello che mi dà pthread o qualunque cosa la libreria di sistema nativa fornisca) o uno singolo per un oggetto. Quanto è efficace bloccare un mutex? Vale a dire …
C ++ 17 ha introdotto una nuova classe di blocco denominata std::scoped_lock. A giudicare dalla documentazione sembra simile alla std::lock_guardclasse già esistente . Qual è la differenza e quando dovrei usarla?
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.