Domanda

A quanto ho capito ci sono molti diversi algoritmi per l'implementazione del software memoria transazionale (e questo è un settore di ricerca molto attivo). Dove posso trovare (senza dover tuffo nel codice sorgente) che sono utilizzati in diverse lingue e libraryes, in particolare in Clojure e Haskell (GHC)?

È stato utile?

Soluzione

La risorsa definitiva su STM di Clojure - a parte il codice stesso - è il Software memoria transazionale articolo di Mark Volkmann.

Presenta una panoramica breve elevato livello di STM-the-approccio (rispetto ad altri approcci alla concorrenza), riassume le varie concorrenza funzioni disponibili in Clojure, poi immersioni in STM di Clojure, descrivendo esattamente ciò che avviene durante una transazione ed infine andando a destra fino al livello delle singole classi coinvolte. Oltre ad offrire un sacco di informazioni duro con il funzionamento interno di macchinari STM di Clojure, contiene una serie di buone osservazioni molto penetranti relative alle funzioni di concorrenza-oriented di Clojure in cui sono utilizzati nei programmi di Clojure idiomatiche.

Il punto di ingresso reale alle risorse STM di Mark è questa pagina , attualmente con alcune diapositive STM oltre al collegamento alla versione più recente di questo articolo STM principale.

Altri suggerimenti

A un livello molto alto, una cosa che è interessante circa l'implementazione di Clojure di STM, è che è molto diversa da tutte le altre implementazioni. Rich ha guardato molto più verso l'attuale database ad alte prestazioni del mondo reale di pubblicazioni accademiche su ipotetici STM. Ad esempio, STM di Clojure è a mia conoscenza l'unico STM che utilizza Multi versione Controllo della concorrenza (MVCC), che è una tecnica ben nota nel mondo dei database (in realtà, non c'è praticamente alcuna seria base di dati là fuori, che non lo fa uso MVCC), ma è più o meno non discusso a tutti nel mondo STM.

http://www.haskell.org/haskellwiki/Software_transactional_memory per Haskell (e GHC), e http://clojure.org/concurrent_programming per Clojure.

Credo che GHC viene fornito con una libreria di STM, e ci sono alcune tecniche per STM in Clojure.

Per le altre lingue, vedere http://en.wikipedia.org/wiki/Software_transactional_memory#Implementations

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top