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