С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
someMan
0 / 0 / 0
Регистрация: 08.09.2013
Сообщений: 27
#1

dispatch_barrier_async & dispatch_barrier_sync - Программирование iOS

18.11.2013, 21:48. Просмотров 1180. Ответов 5
Метки нет (Все метки)

Привет всем обитателям форума!

Вогнал себя в небольшой ступор. Расскажите, пожалуйста, кто в теме:

Если мы пишем код вида:
Objective-C
1
2
3
4
5
6
7
dispatch_async(queue, exmpl_block1);
dispatch_async(queue, exmpl_block1);
 
dispatch_barrier_async(queue, another_block);
 
dispatch_async(queue, exmpl_block2);
dispatch_async(queue, exmpl_block2);

..то, another_block не выполнится до тех пор, пока не закончатся обе задачи exmpl_block1.
А exmpl_block2 не начнутся, пока не закончится another_block.
Правильно ли я понимаю?

Если да, то зачем тогда используется dispatch_barrier_sync? Если мы все равно ожидаем окончания выполнения блока в dispatch_barrier?

Добавлено через 4 минуты
Мелькнула страшная мысль (сейчас Мака под рукой нет, не могу попробовать) - неужели при dispatch_barrier_async мы ожидаем только конца выполнения предыдущих задач?
И мой exmpl_block2 тут же попадет в очередь после запуска another_block?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2013, 21:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос dispatch_barrier_async & dispatch_barrier_sync (Программирование iOS):

query='SELECT * FROM resume WHERE ' & ''' & RecSet('place')& ''' & '=' & '''& s_loc &''' & - что не так? - C# ASP.NET
упростил для краткости запрос. в чем ошибка? RecSet - это коннекшн. query='SELECT * FROM resume WHERE ' & ''' & RecSet('place')& '''...

error '80020009' Îøèáêà. /lalala/profile.asp, line 28 - C# ASP.NET
При простейшем и сто раз работавшем скрипте, вылетает ошибка! след. содержания error '80020009' ...

Помогите найти драйвера для pci\ven_8086&DEV_266E&SUBSYS_A002145&REV_05\3&13C0B0C5&0&F2 - Компьютерное железо
pci\ven_8086&DEV_266E&SUBSYS_A002145&REV_05\3&13C0B0C5&0&F2 Мультимедиа аудиоконтроллер помогите плз найти...

немогу найти драйвера на PCI\VEN_1039&DEV_7012&SUBSYS_810D1043&REV_A0\3&61AAA01&0&17 - Звук, акустика
Мультимедиа аудиоконтроллер PCI\VEN_1039&DEV_7012&SUBSYS_810D1043&REV_A0\3&61AAA01&0&17

Мультимедиа контролер PCI\VEN_14F1&DEV_8800&SUBSYS_EA3D14F1&REV_05\4&25700A26&0&3020 - Windows XP
Помогите пожалуйста найти драйвер на мультимедиа видеоконтролер ...

Нужен драйвера, код PCI\VEN_1039&DEV_7012&SUBSYS_0C98105B&REV_A0\3&B1BFB68&0&17 - Звук, акустика
всем привет !! уменя нет звука нужен драйвер код PCI\VEN_1039&DEV_7012&SUBSYS_0C98105B&REV_A0\3&B1BFB68&0&17 скачал прогу их много ну все...

5
glvrzzz
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
19.11.2013, 08:43 #2
When the barrier block reaches the front of a private concurrent queue, it is not executed immediately. Instead, the queue waits until its currently executing blocks finish executing. At that point, the barrier block executes by itself. Any blocks submitted after the barrier block are not executed until the barrier block completes.

The queue you specify should be a concurrent queue that you create yourself using the dispatch_queue_create function. If the queue you pass to this function is a serial queue or one of the global concurrent queues, this function behaves like the dispatch_async function.
То есть, зависит от того, какая у вас очередь: если serial или одна из глобальных concurrent, то он ведет себя так же как dispatch_async. Если concurrent - то когда, очередь доходит до блока, он не выполняется сразу же, а ждет пока выполнятся все блоки, которые сейчас выполняются в очереди. Все, что диспатчится после него, ждет пока он не выполнится.

Добавлено через 5 минут
пардон, плохо прочитал вопрос, все же просто:
Unlike dispatch_barrier_async, this function does not return until the barrier block has finished. Calling this function and targeting the current queue results in deadlock.
1
someMan
0 / 0 / 0
Регистрация: 08.09.2013
Сообщений: 27
21.11.2013, 14:20  [ТС] #3
Спасибо.
То есть выходит, что dispatch_barrier_async по аналогии с dispatch_async сразу возвращает управление?
0
glvrzzz
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
22.11.2013, 06:29 #4
именно
1
someMan
0 / 0 / 0
Регистрация: 08.09.2013
Сообщений: 27
22.11.2013, 14:42  [ТС] #5
Спасибо!
Т.е. получается такая картина:

dispatch_async - никого не ждет и сразу возвращает управление
dispatch_sync - никого не ждет, но не возвращает управление, пока не завершится
dispatch_barrier_async - ждет завершения предыдущих потоков в очереди, и сразу возвращает управление
dispatch_barrier_sync - ждет завершения предыдущих и не возвращает управление, пока не завершится

Я правильно понимаю эту GCD-кухню?
0
Dan_banan_
11 / 11 / 1
Регистрация: 03.03.2013
Сообщений: 87
Записей в блоге: 1
05.12.2013, 14:42 #6
dispatch_sync - при вызове на главное очереди приложение повиснет
0
05.12.2013, 14:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2013, 14:42
Привет! Вот еще темы с ответами:

Драйвера на PCI\VEN_10B7&DEV_1700&SUBSYS_80EB1043&REV_12\4&2E98101C&0&28 F0 - Звук, акустика
помогите плиз - вот ID: PCI\VEN_10B7&DEV_1700&SUBSYS_80EB1043&REV_12\4&2E98101C&0&28F0 Заранее...

Кто встречался с таким, подскажите - (#206;áúåêò) - C# ASP.NET
Если на asp-странице происходит ошибка, то сервер выдает сообщение вот примерно в таком виде: <p>Îáúåêò Response</font> <font...

Что изменить в строке чтобы считалось деление Cells(x , 'B').FormulaR1C1 = '= ( & a1 & )/(& a2&) ' ? - VBA
Что изменить в строке чтобы считалось деление Cells(x , 'B').FormulaR1C1 = '= ( & a1 & )/(& a2&) ' где а1 и а2 значения в...

Драйвера к Аппаратный ID HDAUDIO\FUNC_01&VEN_11D4&DEV_198B&SUBSYS_1043829B&REV_1004 или SoundMAX Integrated Digital HD Audio. - Звук, акустика
Помогите пожалуйста найти драйвера, ищу уже 3-ий день, без звука играю!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.