# io.github.libtmux.kotlin.ExecutionPolicy

- **Module:** io.github.libtmux.kotlin
- **Package:** io.github.libtmux:libtmux-kotlin
- **Language:** Kotlin
- **Kind:** class
- **Source:** https://github.com/libtmux/libtmux-java/blob/f56392b5d9bc7f1f9c1631842333fb90f3d82d40/libtmux-kotlin/src/main/kotlin/io/github/libtmux/kotlin/ExecutionPolicy.kt#L17
- **Page:** https://libtmux.org/en/kotlin/latest/reference/io-github-libtmux-kotlin-executionpolicy/

```
public class ExecutionPolicy(
    public val commands: CoroutineDispatcher,
    public val streamReads: CoroutineDispatcher,
    public val defaultDeadline: Duration = Duration.INFINITE,
)
```

Controls the dispatchers and concurrency limits for a [Server]'s suspending operations.

Two independently sized pools, not one: [commands] backs every `suspend` operation this module
generates or hand-writes, sized from the transport's own admission bound rather than a guess.
[streamReads] backs only what still genuinely blocks a thread — [Server.liveState]'s background
pump. [ControlClient.output] and [ControlClient.events] hold no thread from either pool; they are
built on [io.github.libtmux.control.EventSubscription.poll] and `onReady`, not on a blocking read.

## Parameters

- `commands` (`CoroutineDispatcher`)
- `streamReads` (`CoroutineDispatcher`)
- `defaultDeadline` (`Duration`)

## Members

### Common operations

- `commands` (property)
- `streamReads` (property)

### Other members

- `Companion` (module)
- `defaultDeadline` (property)
