In Proceedings of the First Scottish Functional Programming Workshop, pages 337-346. Technical Report RM/99/9, Department of Computing and Electrical Engineering, Heriot-Watt University, 1999.
Fetch paper (PDF, 245k). Go to publications, talks or home page.
Thimble is a concurrency library for MLj, the open source ML-to-Java
bytecode compiler. Thimble allows MLj programs to run multiple concurrent
threads that safely communicate through typed channels, without having to
reach down for the underlying Java synchronize
,
wait
and notify
actions. In addition Thimble
events provide efficient multiway synchronization, so that a thread
can choose between inputs from several different channels without the need
for busy waiting. Both channels and events are first-class values, and
Thimble provides a range of operations for users to roll their own varieties
while maintaining data integrity in a multithreaded environment. Thimble
itself is written entirely in MLj, building these high-level features on to
the basic concurrency facilities guaranteed by any Java virtual machine.
This paper presents the Thimble library; some examples of how it can be used; a review of its implementation; and a comparison with related systems like Concurrent ML, Concurrent Haskell and indeed Java itself.
@InProceedings{stark:thitfm, author = {Ian Stark}, title = {Thimble --- {Threads} for {MLj}}, booktitle = {Proceedings of the First Scottish Functional Programming Workshop}, year = {1999}, series = {Department of Computing and Electrical Engineering, Heriot-Watt University, Technical Report}, number = {RM/99/9}, pages = {337--346}, url = {http://www.inf.ed.ac.uk/~stark/thitfm.html} }