Ian Stark

Thimble - Threads for MLj

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.

Abstract

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

Page last modified: Wednesday 5 December 2012