Using the holidays for a 2-week coding session. Writing a new transactional memory manager that’s O(1) for all operations, completely non-blocking and progress-guaranteeing, and uses atomics only for writes.
-
Show this thread
-
All transactions are applied in a sequential order, but can run in parallel as long as there are no read-write conflicts. The big cost: all values > 48 bits in size must be heap-allocated. For this I wrote a non blocking concurrent garbage collector a couple years ago.
3 replies 1 retweet 55 likesShow this thread -
-
Replying to @beast_pixels @TimSweeneyEpic
Not sure if O(1), but "pauseless" garbage collectors have been done - like - https://www.azul.com/products/zing/pgc/ … - I don't know much about it, and haven't used it -
@giltene is one of the authors (AFAIK).1 reply 0 retweets 0 likes -
I mean transaction read, write, and commit operations are O(1) and don’t rely on trees or hash tables. Garbage collection is non blocking, lock free, and not dependent on metadata or user hooks...but terrible expensive.
1 reply 0 retweets 0 likes -
Replying to @TimSweeneyEpic @__malkia__ and
It’s just Dijkstra’s concurrent garbage collection scheme layered on top of C++ with smart pointers and a side channel to track the location of all pointers in memory.
1 reply 0 retweets 0 likes -
Replying to @TimSweeneyEpic @__malkia__ and
It can be nonblocking and support relocation because all smart pointers into managed memory are const, however futures and transactional variables can be mutated in-place in managed memory because they support atomic forwarding.
1 reply 0 retweets 0 likes
This is nice for a “mostly functional” programming style but wouldn’t be performant in Java.
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.