From: Bob F. <bfr...@si...> - 2007-05-29 23:22:31
|
On Tue, 29 May 2007, Greg Roelofs wrote: >> In C++, threads may be executing before main() is invoked, and perhaps >> even before the translation unit containing main() has been >> initialized. > > C++ (or C, for that matter) doesn't have threads except via external > libraries. How are they getting created if not explicitly from main()? > Even linked-in tcl requires a call to its interpreter-init function to > spawn a thread... (Or are there OSes that do so in crt0 or whatever?) A C++ class (which has been statically allocated) may create a thread in its constructor to do whatever it needs to do. If the static initialization for this class occurs prior to invoking main() (by being in a translation unit initialized prior to the one containing main, or due to being initialized prior to main() in the same translation unit) then the thread has been created prior to invoking main(). Static construction is one of the joys of C++. Bob ====================================== Bob Friesenhahn bfr...@si..., http://www.simplesystems.org/users/bfriesen/ GraphicsMagick Maintainer, http://www.GraphicsMagick.org/ |