Class MetalCommandQueueManager
- Namespace
- DotCompute.Backends.Metal.Execution
- Assembly
- DotCompute.Backends.Metal.dll
Production-grade command queue manager with priority support and queue pooling. Optimizes concurrent queue usage and tracks performance metrics.
public sealed class MetalCommandQueueManager : IDisposable
- Inheritance
-
MetalCommandQueueManager
- Implements
- Inherited Members
- Extension Methods
Constructors
MetalCommandQueueManager(nint, ILogger, int)
Initializes a new instance of the MetalCommandQueueManager class.
public MetalCommandQueueManager(nint device, ILogger logger, int maxPoolSize = 8)
Parameters
devicenintThe Metal device.
loggerILoggerThe logger.
maxPoolSizeintMaximum queue pool size per priority. Default is 8.
Methods
Cleanup()
Performs cleanup of idle resources.
public void Cleanup()
Dispose()
Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
public void Dispose()
GetQueue(QueuePriority)
Gets or creates a command queue with the specified priority. Reuses pooled queues when available for better performance.
public nint GetQueue(QueuePriority priority = QueuePriority.Normal)
Parameters
priorityQueuePriorityThe queue priority.
Returns
- nint
A command queue handle.
GetStats()
Gets performance statistics for the queue manager.
public QueueManagerStats GetStats()
Returns
ReturnQueue(nint, QueuePriority)
Returns a command queue to the pool for reuse.
public void ReturnQueue(nint queue, QueuePriority priority = QueuePriority.Normal)
Parameters
queuenintThe command queue to return.
priorityQueuePriorityThe queue priority.