As promised, there is an updated Tclkit available here, which includes the Threads enabled Itcl. The same page also contains download links for the modified Itcl sources and (currently only) Windows binaries for Itcl and Itk.
I will provide the Linux binaries soon. Have fun with testing the packages so far, I hope they don’t contain too many bugs.
BTW: Be careful with threads and slave interpreters. Some crashes happen there… I don’t know why, currently. Apparently this is not a problem with my Itcl, but with threads/slave interp’s in general. I had the problems before as well..
Yeah, the long awaited integration of Threads enabled Itcl into Tloona is finished :-).
Well, I am probably the only one who ever awaited this event – at least until now… It comes with the finishing up of the Thread save Itcl itself. I have, however, to correct myself a little. During the development I recognized that it is very difficult to set Itcl objects as thread shared variables. The problem doesn’t take place for simple objects that serve as containers for "low level data types" (Strings, in fact), but as soon as objects are nested as attributes in objects and maybe even circular…
Very common cases, but the solution was even simpler than I thought before: Mark a newly created object as "thread shared", which leads for it to be given an access command in every running and newly created thread automatically – and it’s done. Objects can now be created with the special option -ts resp. -threadshared. That gives Itcl the hint to install the object in every running thread, and furthermore to install it in every new thread – and it works absolutely fine. It means even, that there is no need at all to modify the threads extension…
I wrote a small test suite for the new code to make sure it runns correctly. The old Itcl tests run through as well, so Itcl will work as usual in singne-thread-mode very likely. I also built new Tclkits, which will be available soon. The crux is, that I also had to adapt Itk to the new system. So, if you want to try the thing together with Itk, you have to download my Itk from the Tclkits and extensions page as well. Please make also sure that you recompile every Itcl extensions that has registered C functions as methods or otherwise depends on the Itcl C API. They won’t work without recompilation (and maybe adaption).
Other news on the Tloona front: The parsing of Tcl/Itcl files is done in a different worker thread now and runs asyncronously. So, Tloona is not blocked anymore when a large file is saved. I will continuously make more operations working in multi threads, where it makes sense – however over the summer I won’t be very productive ;-).