> On 11 Apr 2017, at 23:37, Greg Parker via swift-users <swift-users@swift.org>
> wrote:
>
>>
>> On Apr 11, 2017, at 9:10 AM, Gerard Iglesias via swift-users
>> <swift-users@swift.org <mailto:swift-users@swift.org>> wrote:
>>
>> Thanx for the link on this…
>>
>> I am experimenting the use of dispatch queue to mimic somme Actor Model
>> things and it is not a bad idea, dispatch queue are perfect for that.
>>
>> I wonder what is the scalability of the Dispatch layer, are we able to
>> create a bunch of dispatch queue without putting the system on its knees ? I
>> will do tests
>
> Dispatch queues are intended to be cheap, comparable to a pthread_mutex IIRC.
>
> The limited resource are the top-level global queues, DispatchQueue.main and
> DispatchQueue.global(…). There are a limited number of threads available to
> service concurrent items on those queues (around 500 threads on macOS and
> iOS, IIRC). If too many concurrent work items are pushed into the global
> queues at one time then the process may deadlock when dispatch exhausts its
> thread pool.
These can be accessed via sysctl, for future reference:
$ sysctl kern.wq_max_threads kern.wq_max_constrained_threads
kern.wq_max_threads: 512
kern.wq_max_constrained_threads: 64
The limit of 64 applies to lower-priority items (which is the default, IIRC) so
you may find that you hit the 64 limit faster than you hit the 512 limit.
Alex
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users