2014-12-04 19:23:51 by Henrik Grubbström (Grubba) <firstname.lastname@example.org>
Thread: Removed inherit of Thread.Thread.
Mast explains the reason rather clearly:
The reason for its existance was that it was supposed to be
supported to be possible to write
Thread t = Thread(...);
Unfortunately that was completely and utterly wrong. The loads of
optional modifiers in the file is a telltale sign that the module
Thread, which contains tools to use with threads, and
Thread.Thread, which represents a specific thread, are two
completely different things. That being the case, it's hardly wise
to give them the same name.
An example where this stunt breaks down is when the module is
inherited: If the type name for a thread object is Thread then it's
reasonable to believe that you can inherit Thread to make a custom
thread class with some extra context. But not only do you get loads
of stuff with that inherit which are meaningless to have in a
thread instance (mutexes, queues, etc), you also get a nonworking
thread since the create function is overridden here to avoid a
thread being created when the module is created.
Using Thread as a type name for thread objects has been strongly
discouraged. I.e. use "Thread.Thread t = Thread.Thread()" and _not_
"Thread t = Thread()".
The feature has been discouraged since Pike 7.7.10 (2004-10-14), and
is likely to have been broken since at least Pike 7.7.28 (2006-04-07).
This commit also marks Thread.`()() as deprecated.
Inside #if constant(thread_create)