# ReentrantAttribute

Package: [Microsoft.Orleans.Core.Abstractions](/orleans/docs/api/csharp/microsoft.orleans.core.abstractions/) 10.0.0

[NuGet package](https://www.nuget.org/packages/Microsoft.Orleans.Core.Abstractions) | [Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Core.Abstractions/Concurrency/GrainAttributeConcurrency.cs#L33)

```csharp
public sealed class ReentrantAttribute : Attribute, IGrainPropertiesProviderAttribute
```

The Reentrant attribute is used to mark grain implementation classes that allow request interleaving within a task. 

This is an advanced feature and should not be used unless the implications are fully understood. That said, allowing request interleaving allows the run-time system to perform a number of optimizations that may significantly improve the performance of your application.

## Constructors

- [ReentrantAttribute](/orleans/docs/api/csharp/microsoft.orleans.core.abstractions/orleans.concurrency.reentrantattribute/constructors/constructor-c5891363/)

## Methods

- [Populate(IServiceProvider, Type, GrainType, Dictionary&lt;string, string&gt;)](/orleans/docs/api/csharp/microsoft.orleans.core.abstractions/orleans.concurrency.reentrantattribute/methods/populate-system-iserviceprovider-system-type-orleans-runtime-graintype-system-co-de99879b/)
