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}
}