View source code Display the source code in core/thread.d from which this page was generated on github. Improve this page Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using local clone. Page wiki View or edit the community-maintained wiki page associated with this page.

Class core.thread.Thread

This class encapsulates all threading functionality for the D programming language. As thread manipulation is a required facility for garbage collection, all user threads should derive from this class, and instances of this class should never be explicitly deleted. A new thread may be created using either derivation or composition, as in the following example.

Inherits from

Constructors

Name Description
this Initializes a thread object which is associated with a static D function.
this Initializes a thread object which is associated with a dynamic D function.

Fields

Name Type Description
PRIORITY_DEFAULT const(int) The default scheduling priority that is set for a thread. On systems where multiple scheduling policies are defined, this value represents the default priority for the scheduling policy of the process.
PRIORITY_MAX const(int) The maximum scheduling priority that may be set for a thread. On systems where multiple scheduling policies are defined, this value represents the maximum valid priority for the scheduling policy of the process.
PRIORITY_MIN const(int) The minimum scheduling priority that may be set for a thread. On systems where multiple scheduling policies are defined, this value represents the minimum valid priority for the scheduling policy of the process.

Properties

Name Type Description
isDaemon [get] bool Gets the daemon status for this thread. While the runtime will wait for all normal threads to complete before tearing down the process, daemon threads are effectively ignored and thus will not prevent the process from terminating. In effect, daemon threads will be terminated automatically by the OS when the process exits.
isDaemon [set] bool Sets the daemon status for this thread. While the runtime will wait for all normal threads to complete before tearing down the process, daemon threads are effectively ignored and thus will not prevent the process from terminating. In effect, daemon threads will be terminated automatically by the OS when the process exits.
isRunning [get] bool Tests whether this thread is running.
name [get] string Gets the user-readable label for this thread.
name [set] string Sets the user-readable label for this thread.
priority [get] int Gets the scheduling priority for the associated thread.
priority [set] int Sets the scheduling priority for the associated thread.

Methods

Name Description
getAll Provides a list of all threads currently being tracked by the system.
getThis Provides a reference to the calling thread.
join Waits for this thread to complete. If the thread terminated as the result of an unhandled exception, this exception will be rethrown.
opApply Operates on all threads currently being tracked by the system. The result of deleting any Thread object is undefined.
sleep Suspends the calling thread for at least the supplied period. This may result in multiple OS calls if period is greater than the maximum sleep duration supported by the operating system.
start Starts the thread and invokes the function or delegate passed upon construction.
yield Forces a context switch to occur away from the calling thread.
factory Create instance of class specified by the fully qualified name classname. The class must either have no constructors or have a default constructor.
opCmp Compare with another Object obj.
opEquals Returns !=0 if this object does have the same contents as obj.
toHash Compute hash function for Object.
toString Convert Object to a human readable string.

Example

class DerivedThread : Thread
{
    this()
    {
        super(&run);
    }

private:
    void run()
    {
        // Derived thread running.
    }
}

void threadFunc()
{
    // Composed thread running.
}

// create and start instances of each type
auto derived = new DerivedThread().start();
auto composed = new Thread(&threadFunc).start();

Authors

Sean Kelly, Walter Bright, Alex Rønne Petersen, Martin Nowak

License

Distributed under the Boost Software License 1.0. (See accompanying file LICENSE)

Comments