I read through most of the archive but I am still unable to figure out why implementing shared variables requires all this complexity. Let me start with a description of my understanding of threads:
. All shared variables need to be accessible from the interpreters corresponding to the threads they are shared across. . Creating a thread clones all the variables in the parent. . Hence you need a mechanism whereby all the copies of a variable are synced (using magic). Instead, is it not possible to just increment the reference count of every variable by overloading its clone method. The destructor can then reduce the reference count. I don't know enough about cloning to figure out if this will work yet. Perhaps the issue is whether tied variables can be shared? Arvind