# reentrancy

Tells the compiler to generate reentrant code to support a multithreaded application.

## Syntax

Linux: | -reentrancy keyword -noreentrancy

macOS: | -reentrancy keyword -noreentrancy

Windows: | /reentrancy:keyword /noreentrancy

## Arguments

keyword | Specifies details about the program. Possible values are:
none | Tells the run-time library (RTL) that the program does not rely on threaded or asynchronous reentrancy. The RTL will not guard against such interrupts inside its own critical regions. This is the same as specifying noreentrancy.
async | Tells the run-time library (RTL) that the program may contain asynchronous (AST) handlers that could call the RTL. This causes the RTL to guard against AST interrupts inside its own critical regions.
threaded | Tells the run-time library (RTL) that the program is multithreaded, such as programs using the POSIX threads library. This causes the RTL to use thread locking to guard its own critical regions.

## Default

threaded | The compiler tells the run-time library (RTL) that the program is multithreaded.

## Description

This option tells the compiler to generate reentrant code to support a multithreaded application.

If you do not specify a keyword for reentrancy, it is the same as specifying reentrancy threaded.

To ensure that a threadsafe and/or reentrant run-time library is linked and correctly initialized, option reentrancy threaded should also be used for the link step and for the compilation of the main routine.

Note that if option threads is specified, it sets option reentrancy threaded, since multithreaded code must be reentrant.

## IDE Equivalent

Visual Studio: Code Generation > Generate Reentrant Code

## Alternate Options

None

Parent topic: Advanced Optimization Options

## See Also

threads compiler option