›› Tag : memory-model   [ Next page ]

un oggetto atomico è pericoloso in qualsiasi contesto in cui un oggetto normale è sicuro?

la mia domanda è semplice: esiste un algoritmo parallelo in cui l'uso di un oggetto di tipo banale T è legale e sicuro (ben definito, garantito per funzionare) e l'uso di un oggetto std::atomic>T porta ad un comportamento non specificato o indefinito? in altre parole, è possibile che un tipo non atomico fornisca garan

  Read more »

in teoria è (perversamente) legale usare solo il riutilizzo accidentale di una gamma di memoria nell'allocazione dinamica per sincronizzare i thread?

in C + +, l'allocazione della memoria dinamica (de) (mallock-free / new-delete) può ovviamente ottenere ripetutamente lo stesso intervallo di memoria che viene liberato e riassegnato in sequenza. in multithread C + +, che può accadere in più thread. ovviamente tale riutilizzo non dovrebbe essere il problema dell'utente

  Read more »

cosa garantisce che diversi oggetti non correlati in due fili non correlati non abbiano una condizione di razza (inevitabile)?

quando thread diversi usano solo oggetti estranei e letteralmente non condividono nulla che non possono avere una condizione di razza, giusto? ovviamente. in realtà tutti i thread condividono qualcosa: lo spazio degli indirizzi. non ci è garanzia che una posizione di memoria che è stata usata da un filetto non stia and

  Read more »

per quanto riguarda l'ordine delle istruzioni nelle esecuzioni dei carichi cache-miss prima dei negozi cache-hit su x86

dato il piccolo programma mostrato di seguito (realizzato artigianalmente per sembrare lo stesso da una coerenza sequenziale / prospettiva TSO), e supponendo che sia in esecuzione da un SuperScalar fuori ordine cpu x86: Load A >-- A in main memory Load B >-- B is in L2 Store C, 123 >-- C is L1 ho alcune domande: assum

  Read more »

la letteratura sulla coerenza della cache generalmente si riferisce solo ai buffer del negozio ma non ai buffer di lettura. eppure uno in qualche modo ha bisogno di entrambi?

quando si legge sui modelli di coerenza (vale a dire il TSO x86), gli autori in generale ricorrono a modelli in cui ci sono un gruppo di CPU, i loro buffer di deposito associati e le loro cache private. se la mia comprensione è corretta, buffer di deposito può essere descritto come code dove CPU possono mettere qualsia

  Read more »

il concetto di sequenza di rilascio è utile nella pratica?

la semantica atomica C / C + + garantisce solo la visibilità (attraverso happen-before relation) delle operazioni di memoria eseguite dall'ultimo thread che ha fatto un'operazione di scrittura "semplice" di rilascio (non in lettura-modify-write). (c'è una forte discriminazione semantica tra scrive e operazioni RMW.) co

  Read more »

utilizzando queste operazioni atomiche con ordine di memoria rilassato e rel/ACQ come mostrato, funziona questo frammento C ++?

scritto in cppmem pseudo codice: int main() {

  Read more »

compilare e collegare al file .com con Turbo C

sto provando a compilare e collegare un programma semplice ad un file del DOS .com usando il compilatore e il linker di Turbo C. con questo provo il più semplice C-programma che posso pensare. void main() {} ci sono argomenti da linea di comando per collegarsi ai file com nel Turbo C Linker? il messaggio di errore ch

  Read more »

un thread di chiamata vedrà modifiche alle variabili locali dopo thread.join ()?

nell'esempio più semplice possibile, diciamo che ho una funzione che avvia un thread, che a sua volta imposta il valore di una variabile locale a true. uniamo il filetto, allora lasciamo la funzione. bool func() {bool b = false;std::thread t([

  Read more »

ci sono barriere di memoria implicite in C ++

nel seguente codice, è l'uso di atomici necessari per garantire semantica senza racche su tutte le piattaforme o l'uso di un promiscue.set _ value / future.wait implica una sorta di barriera di memoria implicita che mi permetterebbe di fare affidamento sulla bandiera di scrivere essendo diventato visibile al thread es

  Read more »