---
title: dispatch_source_create
framework: dispatch
role: symbol
role_heading: Function
path: dispatch/dispatch_source_create
---

# dispatch_source_create

Creates a new dispatch source to monitor low-level system events.

## Declaration

```occ
extern dispatch_source_tdispatch_source_create(dispatch_source_type_t type, uintptr_t handle, uintptr_t mask, dispatch_queue_t queue);
```

## Parameters

- `type`: The type of the dispatch source. For example, to create a timer source, specify doc://com.apple.dispatch/documentation/Dispatch/DISPATCH_SOURCE_TYPE_TIMER. For a complete list of constants, see doc://com.apple.dispatch/documentation/Dispatch/dispatch_source_type_t.
- `handle`: The underlying system handle to monitor. The interpretation of this argument is determined by the constant provided in the type parameter.
- `mask`: A mask of flags specifying which events are desired. The interpretation of this argument is determined by the constant provided in the type parameter.
- `queue`: The dispatch queue to which the event handler block is submitted.

## Return Value

Return Value A new dispatch source object or NULL if the dispatch source could not be created.

## Discussion

Discussion Dispatch sources are not reentrant. Any events received while the dispatch source is suspended or while the event handler block is currently executing are coalesced and delivered after the dispatch source is resumed or the event handler block has returned. Dispatch sources are created in a suspended state. After creating the source and setting any desired attributes (for example, the handler or the context), your application must call activate() to begin event delivery. important: Event source creation is asynchronous, so be aware of any race conditions with monitored system handles. For example, if a dispatch source is created for a process and that process exits before the source is created, any specified cancellation handler may not be called.

## See Also

### Creating a Dispatch Source

- [dispatch_source_t](dispatch/dispatch_source_t.md)
- [dispatch_source_type_t](dispatch/dispatch_source_type_t.md)
