Source Files
- portions of tclUtil.c
Public Interface
- None
Private Interface
- struct ProcessGlobalValue
- TclGetProcessGlobalValue
- TclSetProcessGlobalValue
Directly Depends On Public Interface
Directly Depends On Private Interface of
- None
Discussion
A system for managing Tcl values that must be shared by the entire process, including all threads, but using caching so that thread locking is avoided when possible. Is able to withstand changing values of the system encoding. Best for things written once or few times and then read many times, and for things that have to be first recorded with one system encoding active, then read with a different one in place. Implemented entirely using public interfaces, so extensions could copy or even be the provider of this.
It appears that the implementation lacks the memory fences required to make it robustly portably correct. It makes unwarranted assumption about what an epoch value can reliably tell you about the controlled values in a multi-core setting.