185 похожих чатов

Возник вопрос про Serial очередь GCD: она под капотом использует

один поток для выполнения тасок или несколько?

19 ответов

23 просмотра

Приведи пример создания сериал очереди. Думаю сам поймешь ответ

Юра
DispatchQueue(label: "SerialQueue") ?

Можешь писать print(Thread.current),вроде так и тебе будет в консоле писать номер потока, в котором выполняется этот код

1. Создаёшь очередь 2. Запускаешь асинхронно или синхронно код в этой очереди

Юра- Автор вопроса
Paul
1. Создаёшь очередь 2. Запускаешь асинхронно или ...

Так я уже делал Там был один поток Но это не дает точного ответа что он всегда один Так как может в контексте теста, который я проводил, сериал очереддь использовала один поток

это помещение твоей кастомной очереди в одну из 4 глобал очередей. Очередь попадает в первый осободившийся поток, кроме главного и выполняется в нем. Если в составе этой очереди используются блоки кода, выполняемые на главном потоке, то очередь будет использовать помимо своего потока (куда попала), еще ресурсы главного потока (точнее ждать пока выполнится блок кода на главном потоке). Если в составе этой очереди не используются инструментарий многопоточки то код выполнится в том потоке - в который попал

Юра- Автор вопроса
Anton Cherkasov
screenshot Хотя, я, может, не так перевел

Спасибо) Пришли плз ссылку на доку

если у тебя 4 ядерный проц на устройстве без мультитрединга, то у тебя 4 потока. Возможен вариант, при котором все потоки будут заняты выполняемыми задачами

Юра
Спасибо) Пришли плз ссылку на доку

https://developer.apple.com/library/archive/documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html

Юра- Автор вопроса
Anton Cherkasov
screenshot Хотя, я, может, не так перевел

@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

Юра- Автор вопроса
Boris
это помещение твоей кастомной очереди в одну из 4 ...

Подскажи плз что ты имел введу под "это помещение твоей кастомной очереди в одну из 4 глобал очередей"

Юра
Спасибо) Пришли плз ссылку на доку

У меня очень хороший видео на это тему, скинуть?

Boris
если у тебя 4 ядерный проц на устройстве без мульт...

А поток разве не абстракция и не связан с кол - вом ядер? Просто я могу наплодить кучу потоков и просто буду терять много времени на переключении контекста. Или ты имеешь в виду, что очередь не создает новых потоков, а только использует системные?

Юра
Подскажи плз что ты имел введу под "это помещение ...

есть хорошая статья. https://habr.com/ru/post/320152/ Есть всего 4 вида глобал очередей, отличающихся кос классом. Каждый раз когда ты создаешь кастомную очередь, на самом деле ты ее не создаешь. Ты помещаешь свой таск в ранее созданные эплом очереди

Anton Cherkasov
А поток разве не абстракция и не связан с кол - во...

как используя GCD ты наплодишь кучу потоков?

Anton Cherkasov
А поток разве не абстракция и не связан с кол - во...

Напрямую потоки лучше не создавать. Нужно создавать очереди. Выделение потока осуществляется самой системой.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта