Articles of thread safety

Pubblicazione di oggetti non thread-safe

Leggendo la concorrenza Java in pratica, sezione 3.5: Viene sollevato un reclamo public Holder holder; public void initialize() { holder = new Holder(42); } Oltre all’ovvio rischio in tutta sicurezza di creare 2 istanze di Holder, il libro afferma che può verificarsi un ansible problema di pubblicazione, oltre a una class Holder come public Holder […]

Qual è la differenza tra SynchronizedCollection e le altre raccolte concorrenti?

In che modo SynchronizedCollection e le raccolte simultanee nello spazio System.Collections.Concurrent nomi System.Collections.Concurrent differiscono l’una dall’altra, a parte le raccolte simultanee come spazio dei nomi e SynchronizedCollection come class? SynchronizedCollection e tutte le classi in Concurrent Collections forniscono collezioni thread-safe. Come decido quando utilizzarne uno e perché?

Come accedere al controllo WPF c # in modo thread-safe?

Ho provato a utilizzare gli esempi da MSDN per questo, ma sembrano essere applicabili solo a Windows Form. Ad esempio il metodo di utilizzo di .InvokeRequired si basa sul controllo dei moduli di Windows, tuttavia questo metodo non è disponibile per i controlli WPF. Il metodo di lavoratore Backgound lancia anche una InvalidOperationException – Il […]

Il thread SecureRandom è sicuro?

Il thread SecureRandom è sicuro? Cioè, dopo averlo inizializzato, si può fare affidamento sul prossimo numero casuale per essere sicuri? Esaminare il codice sorgente sembra dimostrare che lo è, e questo bug report sembra indicare che la sua mancanza di documentazione come thread safe è un problema javadoc. Qualcuno ha confermato che è effettivamente thread […]

ConcurrentDictionary Pitfall – Le fabbriche dei delegati da GetOrAdd e AddOrUpdate sono sincronizzate?

La documentazione di ConcurrentDictionary non è uno stato esplicito, quindi suppongo che non ci si possa aspettare che i delegati valueFactory e updateValueFactory abbiano la loro esecuzione sincronizzata (rispettivamente dalle operazioni GetOrAdd () e AddOrUpdate () ). Quindi, penso che non possiamo implementare l’uso di risorse al loro interno che richiedono un controllo concorrente senza […]

è l’operatore di assegnazione ‘=’ atomico?

Sto implementando la comunicazione Inter-Thread usando la variabile globale. //global var volatile bool is_true = true; //thread 1 void thread_1() { while(1){ int rint = rand() % 10; if(is_true) { cout << "thread_1: "<< rint <<endl; //thread_1 prints some stuff if(rint == 3) is_true = false; //here, tells thread_2 to start printing stuff } } […]

Il modo più breve per scrivere un metodo di accesso sicuro ai thread per un controllo di moduli di Windows

In questo articolo: http://msdn.microsoft.com/en-us/library/ms171728(VS.80).aspx L’autore utilizza il seguente metodo per effettuare chiamate thread-safe a un controllo Windows Form: private void SetText(string text) { // InvokeRequired required compares the thread ID of the // calling thread to the thread ID of the creating thread. // If these threads are different, it returns true. if (this.textBox1.InvokeRequired) { […]

System.Lazy con diversa modalità di sicurezza del thread

La class System.Lazy di .NET 4.0 offre tre modalità di sicurezza del thread tramite l’enum LazyThreadSafetyMode , che riepilogherò come: LazyThreadSafetyMode.None – Non thread-safe. LazyThreadSafetyMode.ExecutionAndPublication – Solo un thread concorrente tenterà di creare il valore sottostante. Al termine della creazione, tutti i thread in attesa riceveranno lo stesso valore. Se durante la creazione si verifica […]

La lettura simultanea del vettore stl è sicura per thread?

Sto lavorando a un’applicazione in cui è previsto un numero enorme di thread per iterare su un insieme di valori stringa e cercare di associare i propri dati con quelli disponibili nell’elenco. Sto cercando il seguente caso d’uso: Il vettore viene inizializzato con pochi elementi di tipo std :: string. (Diciamo che il nome dell’object […]

Come rendere ObservableCollection thread-safe?

System.InvalidOperationException: Collection was modified; enumeration operation may not execute. Sto aggiungendo / rimuovendo da un ObservableCollection che non è su un thread dell’interfaccia utente. Ho un metodo nomi EnqueueReport da aggiungere alla raccolta e un DequeueReport da rimuovere dalla raccolta. Il stream di passaggi è come di seguito: – 1.call EnqueueReport ogni volta che viene […]