Chiarimento sull'acquisizione / rilascio della semantica nella programmazione multithread

2

Nel tentativo di comprendere fondamentalmente qualsiasi concetto, cerco di capire il significato delle parole nel contesto in cui viene utilizzato. Al momento, sto cercando di capire fondamentalmente l'intera semantica acquisizione / rilascio da quando ne ho brevemente parlato a scuola.

In base a questo articolo su MSDN , un'operazione ha Acquisisci semantica se altri processori vedranno l'effetto della sua modifica prima delle modifiche di qualsiasi altra operazione.

D'altra parte, un'operazione Rilascia Semantica se altri processori vedranno l'effetto di qualsiasi operazione precedente prima di vedere l'effetto causato da questa operazione.

Ho capito, ma la domanda è: che cosa si riferiscono ai termini acquisire e rilascio ? Se dovessi spiegare questo concetto per dire mia figlia al grado 8, come faccio a tradurre questi termini nei loro significati attuali?

    
posta e28Makaveli 20.04.2015 - 15:09
fonte

3 risposte

3

Il riferimento è ad alcune risorse che fondamentalmente non possono essere detenute da due agenti contemporaneamente.

L'esempio classico è un blocco, un mutex, un semaforo o un costrutto simile, e il caso d'uso canonico sta facendo un trasferimento di denaro. Se acquisisci una risorsa non trasferibile prima di sottrarre e aggiungere l'importo dai due account e non rilasciarlo fino a dopo, e tutte le operazioni sugli account richiedono quella risorsa , allora è garantito che la quantità di i soldi nel tuo sistema rimangono costanti (come dovrebbe secondo i principi della contabilità). Questa è una buona cosa.

Poiché la maggior parte delle soluzioni del problema di coerenza si riducono a variazioni di tale risorsa non condivisibile, "Acquisire e rilasciare semantiche" apparentemente sono una scorciatoia per parlarne, senza menzionare affatto le locazioni (non lo sapevo prima, ma sembra abbastanza ragionevole).

    
risposta data 20.04.2015 - 15:19
fonte
2

Da qui :

The easy way to remember the difference between Acquire and Release is that Acquire is typically used when you are acquiring a resource (for example, taking a lock), whereas Release is typically used when you are releasing the resource.

    
risposta data 20.04.2015 - 15:16
fonte
2

Stanno cercando di stabilire una corrispondenza tra la terminologia relativa alle operazioni interbloccate e la terminologia relativa all'acquisizione / rilascio di una risorsa protetta, che non è una cosa irragionevole da fare, poiché le prime sono solitamente eseguite per realizzare quest'ultima .

  • Quando si esegue un'operazione interbloccata allo scopo di acquisire una risorsa, non importa ciò che accade prima dell'acquisizione, tutto ciò che conta è che qualunque operazione venga eseguita sulla risorsa una volta che è stata acquisita, fare in infatti appare (dal punto di vista degli altri thread) che accada dopo l'acquisizione avviene, altrimenti la risorsa potrebbe apparire modificata prima che sia bloccata.

  • Quando si esegue un'operazione interbloccata allo scopo di rilasciare una risorsa, non importa ciò che accade dopo il rilascio, tutto ciò che conta è che le ultime operazioni eseguite sulla risorsa prima della sua release in realtà appare (dal punto di vista degli altri thread) che avvenga prima , il rilascio avviene, altrimenti la risorsa potrebbe apparire modificata dopo che è stata sbloccata.

risposta data 20.04.2015 - 15:30
fonte

Leggi altre domande sui tag