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.

This function is, in particular, meant to help maintain garbage collector invariants when a lock is not used.

A critical region is exited with thread_exitCriticalRegion.

Warning: Using critical regions is extremely error-prone. For instance, using locks inside a critical region can easily result in a deadlock when another thread holding the lock already got suspended.

The term and concept of a 'critical region' comes from Mono's SGen garbage collector.

In: The calling thread must be attached to the runtime.

extern (C) @nogc
void
thread_enterCriticalRegion
()

Meta