Un'operazione atomica è indivisibile. Questo termine viene utilizzato per descrivere le transazioni nei database, gli accessi di basso livello nei programmi multithread e le operazioni del file system, tra gli altri.
Cosa significano atomice cosa nonatomicsignificano le dichiarazioni di proprietà? @property(nonatomic, retain) UITextField *userName; @property(atomic, retain) UITextField *userName; @property(retain) UITextField *userName; Qual è la differenza operativa tra questi tre?
Come funzionano internamente atomico / volatile / sincronizzato? Qual è la differenza tra i seguenti blocchi di codice? Codice 1 private int counter; public int getNextUniqueIndex() { return counter++; } Codice 2 private AtomicInteger counter; public int getNextUniqueIndex() { return counter.getAndIncrement(); } Codice 3 private volatile int counter; public int …
Nel libro Effective Java, afferma: La specifica del linguaggio garantisce che la lettura o la scrittura di una variabile è atomica a meno che la variabile non sia di tipo longo double[JLS, 17.4.7]. Che cosa significa "atomico" nel contesto della programmazione Java o della programmazione in generale?
Capisco che std::atomic<>è un oggetto atomico. Ma atomico fino a che punto? Secondo me un'operazione può essere atomica. Cosa si intende esattamente per rendere atomico un oggetto? Ad esempio, se ci sono due thread che eseguono contemporaneamente il seguente codice: a = a + 12; Quindi l'intera operazione (diciamo add_twelve_to(int)) …
In generale, per int num, num++(o ++num), come operazione di lettura-modifica-scrittura, non è atomico . Ma vedo spesso compilatori, ad esempio GCC , generare il seguente codice per esso ( prova qui ): Dato che la riga 5, che corrisponde a num++un'istruzione, possiamo concludere che in questo caso num++ è …
So che operazioni composte come i++non sono thread-safe in quanto coinvolgono più operazioni. Ma controllare il riferimento con se stesso è un'operazione sicura del thread? a != a //is this thread-safe Ho provato a programmare questo e usare più thread ma non è fallito. Immagino di non poter simulare la …
Se ci sono due thread che accedono a una variabile globale, molti tutorial dicono che rendono la variabile volatile per evitare che il compilatore memorizzi nella cache la variabile in un registro e che quindi non venga aggiornato correttamente. Tuttavia, due thread che accedono a una variabile condivisa sono qualcosa …
Qual è la differenza tra i metodi lazySete setdi AtomicInteger? La documentazione non ha molto da dire su lazySet: Alla fine si imposta sul valore dato. Sembra che il valore memorizzato non verrà impostato immediatamente sul valore desiderato, ma verrà invece programmato per essere impostato in futuro. Ma qual è …
Qual è la differenza tra atomic e critical in OpenMP? posso farlo #pragma omp atomic g_qCount++; ma non è lo stesso di #pragma omp critical g_qCount++; ?
In generale, cosa possiamo dare per scontato quando aggiungiamo a un file in UNIX da più processi? È possibile perdere dati (un processo sovrascrive le modifiche dell'altro)? È possibile che i dati vengano alterati? (Ad esempio, ogni processo aggiunge una riga per append a un file di registro, è possibile …
bool compare_exchange_weak (T& expected, T val, ..); compare_exchange_weak()è una delle primitive di scambio di confronto fornite in C ++ 11. È debole nel senso che restituisce falso anche se il valore dell'oggetto è uguale a expected. Ciò è dovuto a errori spuri su alcune piattaforme in cui una sequenza di …
Voglio scrivere un codice portatile (Intel, ARM, PowerPC ...) che risolva una variante di un problema classico: Initially: X=Y=0 Thread A: X=1 if(!Y){ do something } Thread B: Y=1 if(!X){ do something } in cui l'obiettivo è quello di evitare una situazione in cui entrambi i thread stanno facendosomething . …
Prendere in considerazione: void foo() { std::vector<std::atomic<int>> foo(10); ... } I contenuti di foo sono ora validi? O devo ripetere esplicitamente e inizializzarli? Ho controllato Godbolt e sembra che vada bene, tuttavia lo standard sembra essere molto confuso su questo punto. Il costruttore std :: vector afferma di inserire istanze …
Ho ascoltato e letto diversi articoli, discorsi e domande su StackOverflow std::atomice vorrei essere sicuro di averlo capito bene. Perché sono ancora un po 'confuso con la riga della cache che scrive la visibilità a causa di possibili ritardi nei protocolli di coerenza della cache MESI (o derivati), buffer di …
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.