The queue itself is initialized as follows:
init(dependency: Dependency = (.global(qos: .userInitiated), .shared)) {
(underlyingQueue, session) = dependency
fetchQueue = PSOperationQueue()
fetchQueue.underlyingQueue = underlyingQueue
fetchQueue.maxConcurrentOperationCount = 5
}
The problem is that after the first batch of operations added to this queue and successfully completed, a new batch of operations starts on other created threads. The question is why it doesn't use the same threads it used for the first batch of operations.
Illustration:
Threads Fetch(2), 3, 4, 5 used for first batch of operation;
Threads Fetch(9), 10, 12 used for second batch of operation;