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.
							
						Module core.thread.osthread
The osthread module provides low-level, OS-dependent code for thread creation and management.
Functions
| Name | Description | 
|---|---|
| 
									createLowLevelThread(dg, stacksize, cbDllUnload)
								 | Create a thread not under control of the runtime, i.e. TLS module constructors are not run and the GC does not suspend it during a collection. | 
| 
									findLowLevelThread(tid)
								 | Check whether a thread was created by createLowLevelThread. | 
| 
									joinLowLevelThread(tid)
								 | Wait for a thread created with createLowLevelThreadto terminate. | 
| 
									thread_attachThis()
								 | Registers the calling thread for use with the D Runtime. If this routine is called for a thread which is already registered, no action is performed. | 
| 
									thread_detachByAddr(addr)
								 | Deregisters the given thread from use with the runtime. If this routine is called for a thread which is not registered, the result is undefined. | 
| 
									thread_detachInstance(t)
								 | Deregisters the given thread from use with the runtime. If this routine is called for a thread which is not registered, the result is undefined. | 
| 
									thread_detachThis()
								 | Deregisters the calling thread from use with the runtime. If this routine is called for a thread which is not registered, the result is undefined. | 
| 
									thread_enterCriticalRegion()
								 | Signals that the code following this call is a critical region. Any code in this region must finish running before the calling thread can be suspended by a call to thread_suspendAll. | 
| 
									thread_exitCriticalRegion()
								 | Signals that the calling thread is no longer in a critical region. Following a call to this function, the thread can once again be suspended. | 
| 
									thread_findByAddr(addr)
								 | Search the list of all threads for a thread with the given thread identifier. | 
| 
									thread_inCriticalRegion()
								 | Returns true if the current thread is in a critical region; otherwise, false. | 
| 
									thread_init()
								 | Initializes the thread module. This function must be called by the garbage collector on startup and before any other thread routines are called. | 
| 
									thread_isMainThread()
								 | |
| 
									thread_joinAll()
								 | Joins all non-daemon threads that are currently running. This is done by performing successive scans through the thread list until a scan consists of only daemon threads. | 
| 
									thread_processGCMarks(isMarked)
								 | This routine allows the runtime to process any special per-thread handling for the GC. This is needed for taking into account any memory that is referenced by non-scanned pointers but is about to be freed. That currently means the array append cache. | 
| 
									thread_resumeAll()
								 | Resume all threads but the calling thread for "stop the world" garbage collection runs. This function must be called once for each preceding call to thread_suspendAll before the threads are actually resumed. | 
| 
									thread_scanAll(scan)
								 | The main entry point for garbage collection. The supplied delegate will be passed ranges representing both stack and register values. | 
| 
									thread_scanAllType(scan)
								 | The main entry point for garbage collection. The supplied delegate will be passed ranges representing both stack and register values. | 
| 
									thread_setGCSignals(suspendSignalNo, resumeSignalNo)
								 | Instruct the thread module, when initialized, to use a different set of signals besides SIGUSR1 and SIGUSR2 for suspension and resumption of threads. This function should be called at most once, prior to thread_init(). This function is Posix-only. | 
| 
									thread_setThis(t)
								 | Sets the current thread to a specific reference. Only to be used when dealing with externally-created threads (in e.g. C code). The primary use of this function is when Thread.getThis() must return a sensible value in, for example, TLS destructors. In other words, don't touch this unless you know what you're doing. | 
| 
									thread_stackBottom()
								 | Returns the stack bottom of the currently active stack within the calling thread. | 
| 
									thread_stackTop()
								 | Returns the stack top of the currently active stack within the calling thread. | 
| 
									thread_suspendAll()
								 | Suspend all threads but the calling thread for "stop the world" garbage collection runs. This function may be called multiple times, and must be followed by a matching number of calls to thread_resumeAll before processing is resumed. | 
| 
									thread_term()
								 | Terminates the thread module. No other thread routine may be called afterwards. | 
Classes
| Name | Description | 
|---|---|
| 
									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. | 
| 
									ThreadError
								 | Base class for thread errors to be used for function inside GC when allocations are unavailable. | 
| 
									ThreadException
								 | Base class for thread exceptions. | 
| 
									ThreadGroup
								 | This class is intended to simplify certain common programming techniques. | 
Enums
| Name | Description | 
|---|---|
| 
									IsMarked
								 | Indicates whether an address has been marked by the GC. | 
| 
									ScanType
								 | Indicates the kind of scan being performed by thread_scanAllType. | 
Aliases
| Name | Type | Description | 
|---|---|---|
| getpid | core | Returns the process ID of the calling process, which is guaranteed to be unique on the system. This call is always successful. | 
| IsMarkedDg | int delegate(void*) | The isMarked callback function. | 
| ScanAllThreadsFn | void delegate(void*, void*) | The scanning function. | 
| ScanAllThreadsTypeFn | void delegate(ScanType, void*, void*) | The scanning function. | 
| ThreadID | ulong | Represents the ID of a thread, as returned by Threadid.
 The exact type varies from platform to platform. | 
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.