---
title: MTLIOCommandQueue
framework: metal
role: symbol
role_heading: Protocol
path: metal/mtliocommandqueue
---

# MTLIOCommandQueue

A command queue that schedules input/output commands for reading files in the file system, and writing to GPU resources and memory.

## Declaration

```swift
protocol MTLIOCommandQueue : NSObjectProtocol, Sendable
```

## Overview

Overview Use an input/output command queue to submit commands, in command buffers, that load assets from the file system directly into GPU resources. Your app can then use those resources with other commands it submits to an MTLCommandQueue that comes from the same MTLDevice. You make input/output command queues by creating and configuring an MTLIOCommandQueueDescriptor instance and calling an MTLDevice instance’s makeIOCommandQueue(descriptor:) method.

## Topics

### Creating a input/output command buffer

- [makeCommandBuffer()](metal/mtliocommandqueue/makecommandbuffer().md)
- [makeCommandBufferWithUnretainedReferences()](metal/mtliocommandqueue/makecommandbufferwithunretainedreferences().md)

### Adding a barrier to the queue

- [enqueueBarrier()](metal/mtliocommandqueue/enqueuebarrier().md)

### Naming the queue

- [label](metal/mtliocommandqueue/label.md)

## Relationships

### Inherits From

- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### I/O command queues

- [MTLIOCommandQueueDescriptor](metal/mtliocommandqueuedescriptor.md)
- [MTLIOPriority](metal/mtliopriority.md)
- [MTLIOCommandQueueType](metal/mtliocommandqueuetype.md)
- [MTLIOScratchBufferAllocator](metal/mtlioscratchbufferallocator.md)
- [MTLIOScratchBuffer](metal/mtlioscratchbuffer.md)
