Hello everyone,

Way back in October I mentioned the implementation of multithreading support in COLA, which was part of my master thesis. I've presented/defended this thesis a couple of days ago (hurray :) ), so I figured now would be a good time to share what I've been doing this year.

My thesis is about supporting so-called thread-local aspects in delMDSoC, a virtual machine that is built on top of COLA and is aimed at MDSoC paradigms. In order to provide support for these thread-local aspects (aspects with thread-local behaviour), it should be possible to create multiple threads as well, which is why COLA also needed to support multithreading. I've provided very basic multithreading support by essentially integrating the ptreads library into COLA with a couple of wrapper Pepsi objects. If this sparks your interest, you may want to check out this .zip-file: http://svn.assembla.com/svn/aopthesis/Code/delMDSoC_Multithreading_ThreadLocalAspects.zip It contains the delMDSoC implementation of both multithreading and thread-local aspects. See the README.THREADS file included within for further instructions on how to get it all working.

If you happen to be solely interested in multithreading support for COLA, I've also created another .zip-file that is suitable for regular COLA installations: http://svn.assembla.com/svn/aopthesis/Code/COLA_Multithreading.zip I've tested it on the current stable COLA version, revision 376. This .zip-file also includes a README.THREADS file that provides all the necessary instructions to get you started.

The thesis text itself can be found here: http://svn.assembla.com/svn/aopthesis/Documents/AOP%20Thesis.pdf You may want to take a look at it in case you're looking for additional documentation or if you happen to be in a reading mood. (Everything related to multithreading can be found in chapter 3.)

Finally, perhaps a small disclaimer: All of my code has only been tested with essentially a series of toy examples, so it's not unlikely you'll discover a bug or two. Also, I have only provided the basics of the pthreads library: creating/joining/pausing threads and creating/locking/unlocking mutexes. However, it should be relatively easy to carry over additional pthreads functionality by looking at how the included Thread.st and Mutex.st Pepsi objects work.

Have fun,
Tim

_______________________________________________
fonc mailing list
[email protected]
http://vpri.org/mailman/listinfo/fonc

Reply via email to