AtomCaml: first-class atomicity via rollback
MF Ringenburg, D Grossman - ACM SIGPLAN Notices, 2005 - dl.acm.org
MF Ringenburg, D Grossman
ACM SIGPLAN Notices, 2005•dl.acm.orgWe have designed, implemented, and evaluated AtomCaml, an extension to Objective Caml
that provides a synchronization primitive for atomic (transactional) execution of code. A first-
class primitive function of type (unit->'a)->'a evaluates its argument (which may call other
functions, even external C functions) as though no other thread has interleaved execution.
Our design ensures fair scheduling and obstruction-freedom. Our implementation extends
the Objective Caml bytecode compiler and run-time system to support atomicity. A logging …
that provides a synchronization primitive for atomic (transactional) execution of code. A first-
class primitive function of type (unit->'a)->'a evaluates its argument (which may call other
functions, even external C functions) as though no other thread has interleaved execution.
Our design ensures fair scheduling and obstruction-freedom. Our implementation extends
the Objective Caml bytecode compiler and run-time system to support atomicity. A logging …
We have designed, implemented, and evaluated AtomCaml, an extension to Objective Caml that provides a synchronization primitive for atomic (transactional) execution of code. A first-class primitive function of type (unit->'a)->'a evaluates its argument (which may call other functions, even external C functions) as though no other thread has interleaved execution. Our design ensures fair scheduling and obstruction-freedom. Our implementation extends the Objective Caml bytecode compiler and run-time system to support atomicity. A logging-and-rollback approach lets us undo uncompleted atomic blocks upon thread pre-emption, and retry them when the thread is rescheduled. The mostly functional nature of the Caml language and the Objective Caml implementation's commitment to a uniprocessor execution model (i.e., threads are interleaved, not executed simultaneously) allow particularly efficient logging. We have evaluated the efficiency and ease-of-use of AtomCaml by writing libraries and microbenchmarks, writing a small application, and replacing all locking with atomicity in an existing, large multithreaded application. Our experience indicates the performance overhead is negligible, atomic helps avoid synchronization mistakes, and idioms such as condition variables adapt reasonably to the atomic approach.
ACM Digital Library
以上显示的是最相近的搜索结果。 查看全部搜索结果