Articles of thread safety

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 […]

Boost shared_ptr thread safe?

Ho una domanda su boost::shared_ptr . Ci sono molte discussioni. using namespace boost; class CResource { // xxxxxx } class CResourceBase { public: void SetResource(shared_ptr res) { m_Res = res; } shared_ptr GetResource() { return m_Res; } private: shared_ptr m_Res; } CResourceBase base; //———————————————- // Thread_A: while (true) { //… shared_ptr nowResource = base.GetResource(); nowResource.doSomeThing(); […]

Come leggere correttamente un campo int Interlocked.Increment’ed?

Supponiamo che io abbia un campo int non volatile e un thread che è Interlocked.Increment . Un altro thread può leggerlo direttamente in modo sicuro o la lettura deve anche essere interbloccata? In precedenza ho pensato che dovevo usare una lettura interbloccata per garantire che io vedessi il valore corrente, dato che, dopo tutto, il […]

Cos’è il thread Safe in java?

Possibile duplicato: Cosa significa “threadsafe”? Sono molto confuso dal fatto che qualsiasi class sia Thread safe. Sto capendo che, se una class è thread-safe, ha alcuni metodi specifici (come quelli sincronizzati). è giusto o sbagliato? Per favore aiutami elaborando il significato di ciò.

Test unitario per sicurezza thread?

Ho scritto una lezione e molti test di unità, ma non l’ho resa sicura. Ora, voglio rendere sicuro il thread di class, ma per dimostrarlo e usare TDD, voglio scrivere alcuni test dell’unità falliti prima di iniziare il refactoring. Qualche buon modo per farlo? Il mio primo pensiero è creare un paio di thread e […]

Cosa rende un metodo sicuro per i thread? Quali sono le regole?

Esistono regole / linee guida generali per ciò che rende un metodo sicuro per i thread? Capisco che ci siano probabilmente un milione di situazioni una tantum, ma che dire in generale? È così semplice? Se un metodo accede solo a variabili locali, è thread-safe. È così? Questo vale anche per i metodi statici? Una […]

Un’assegnazione di riferimento è protetta da thread?

Sto costruendo una cache multi-threaded in C #, che conterrà un elenco di oggetti Car: public static IList Cars {get; private set;} Mi chiedo se è sicuro cambiare il riferimento in una discussione senza bloccarlo? per esempio private static void Loop() { while (true) { Cars = GetFreshListFromServer(); Thread.Sleep(SomeInterval); } } Fondamentalmente si tratta di […]