stm

Are we asking too much of transactional memory?

I've been reading up a lot about transactional memory lately. There is a bit of hype around TM, so a lot of people are enthusiastic about it, and it does provide solutions for painful problems with locking, but you regularly also see complaints: You can't do I/O You have to write your atomic sections so they can run several times (be c...

STM hash library for C (glib?)

I'm looking for some C library that includes STM-style (Software Transactional Memory) hash maps, but I had no luck so far. It would be great if it was based on glib / gobject, but it's not that crucial. It also doesn't need proper transactions over many objects - single immutable hash support is all I really need. Must haves: immutable...

How to make Haskell's TChan defer messages like Erlang's message queues can?

Consider the following Erlang code: -module(testit). -export([testit/0]). testit() -> Pid = spawn(fun testit_proc/0), Pid ! final, Pid ! one, Pid ! two, io:format("Root finished~n"). testit_proc() -> receive one -> io:format("One~n"); two -> io:format("Two~n") end, receive ...

How does the maglev shared global state differ from Software Transactional Memory?

I have read about both concepts, but I am struggling to see if they are the same thing or different? ...

Is Software Transactional Memory the same as database transactions?

I have read alot about Software Transactional Memory, especially in relaiton to Haskell but I am trying to figure how it is different from database transactions? Are there some advantages I do not understand with STM? ...

What run-time issues are present when using thread-level memory-protection/paging?

Okay, so we support per-process memory paging/protection today. I've been wondering for years what sort of benefit is gained by offering page-level protections to what is arguably the smallest execution unit our OSes support today: threads. This question on Software Transactional Memory brought it back to the forefront for me. Benef...

Clojure STM ( dosync ) x Java synchronize block

What i the difference between Clojure STM ( dosync) approach and Java synchronize Block ? Im reading the code below from "The sleeping barber" problem. (http://www.bestinclass.dk/index.clj/2009/09/scala-vs-clojure-round-2-concurrency.html) (defn the-shop [a] (print "[k] entering shop" a) (dosync (if (< (count @queue) ...