View source code
Display the source code in core/thread/osthread.d from which this
page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a
Bugzilla issue.
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.
Class core.thread.osthread.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.
Constructors
Name | Description |
---|---|
this
(fn, sz)
|
Initializes a thread object which is associated with a static D function. |
this
(dg, sz)
|
Initializes a thread object which is associated with a dynamic D function. |
Properties
Name | Type | Description |
---|---|---|
isRunning [get]
|
bool | Tests whether this thread is running. |
priority [get]
|
int | Gets the scheduling priority for the associated thread. |
priority [set]
|
int | Sets the scheduling priority for the associated thread. |
PRIORITY_DEFAULT [get]
|
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 [get]
|
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 [get]
|
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. |
id [get]
|
ulong | Gets the OS identifier for this thread. |
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. |
isMainThread [get]
|
bool | Tests whether this thread is the main thread, i.e. the thread that initialized the runtime |
name [get]
|
string | Gets the user-readable label for this thread. |
name [set]
|
string | Sets the user-readable label for this thread. |
Methods
Name | Description |
---|---|
getThis
()
|
Provides a reference to the calling thread. |
join
(rethrow)
|
Waits for this thread to complete. If the thread terminated as the result of an unhandled exception, this exception will be rethrown. |
sleep
(val)
|
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
(classname)
|
Create instance of class specified by the fully qualified name classname. The class must either have no constructors or have a default constructor. |
getAll
()
|
Provides a list of all threads currently being tracked by the system.
Note that threads in the returned array might no longer run (see
ThreadBase isRunning ).
|
getThis
()
|
Provides a reference to the calling thread. |
opApply
(dg)
|
Operates on all threads currently being tracked by the system. The
result of deleting any Thread object is undefined.
Note that threads passed to the callback might no longer run (see
ThreadBase isRunning ).
|
opCmp
(o)
|
Compare with another Object obj. |
opEquals
(o)
|
Test whether this is equal to o .
The default implementation only compares by identity (using the is operator).
Generally, overrides and overloads for opEquals should attempt to compare objects by their contents.
A class will most likely want to add an overload that takes your specific type as the argument
and does the content comparison. Then you can override this and forward it to your specific
typed overload with a cast. Remember to check for null on the typed overload.
|
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();
new Thread({
// Codes to run in the newly created thread.
}) .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)
Copyright © 1999-2022 by the D Language Foundation | Page generated by ddox.