один поток для выполнения тасок или несколько?
Приведи пример создания сериал очереди. Думаю сам поймешь ответ
DispatchQueue(label: "SerialQueue") ?
Можешь писать print(Thread.current),вроде так и тебе будет в консоле писать номер потока, в котором выполняется этот код
1. Создаёшь очередь 2. Запускаешь асинхронно или синхронно код в этой очереди
Так я уже делал Там был один поток Но это не дает точного ответа что он всегда один Так как может в контексте теста, который я проводил, сериал очереддь использовала один поток
это помещение твоей кастомной очереди в одну из 4 глобал очередей. Очередь попадает в первый осободившийся поток, кроме главного и выполняется в нем. Если в составе этой очереди используются блоки кода, выполняемые на главном потоке, то очередь будет использовать помимо своего потока (куда попала), еще ресурсы главного потока (точнее ждать пока выполнится блок кода на главном потоке). Если в составе этой очереди не используются инструментарий многопоточки то код выполнится в том потоке - в который попал
Спасибо) Пришли плз ссылку на доку
если у тебя 4 ядерный проц на устройстве без мультитрединга, то у тебя 4 потока. Возможен вариант, при котором все потоки будут заняты выполняемыми задачами
https://developer.apple.com/library/archive/documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html
@null_pointer_excepti0n спасибо за ссылку на доку https://developer.apple.com/library/archive/documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html по ней, а именно по фразе: The currently executing task runs on a distinct thread (which can vary from task to task) that is managed by the dispatch queue можно сделать вывод, что поток для выполнения следующей задачи отправленной в очередь может поменяться @bugorbn @pshkltsk fyi но сколько раз не запускал код, предложеный @pshkltsk, это у меня не происходило походу нужно смотреть актуальные исходники GCD
Подскажи плз что ты имел введу под "это помещение твоей кастомной очереди в одну из 4 глобал очередей"
У меня очень хороший видео на это тему, скинуть?
А поток разве не абстракция и не связан с кол - вом ядер? Просто я могу наплодить кучу потоков и просто буду терять много времени на переключении контекста. Или ты имеешь в виду, что очередь не создает новых потоков, а только использует системные?
есть хорошая статья. https://habr.com/ru/post/320152/ Есть всего 4 вида глобал очередей, отличающихся кос классом. Каждый раз когда ты создаешь кастомную очередь, на самом деле ты ее не создаешь. Ты помещаешь свой таск в ранее созданные эплом очереди
как используя GCD ты наплодишь кучу потоков?
Не с помощью GCD, а вручную. POSIX
Напрямую потоки лучше не создавать. Нужно создавать очереди. Выделение потока осуществляется самой системой.
Обсуждают сегодня