Описание тега dispatchsemaphore

2 ответа

Как я могу использовать DispatchSemaphore с закрытием

У меня есть значение, которое выглядит так lazy var authHeaders: [String: String] = { if shouldTokenBeRefreshed() { let semaphore = DispatchSemaphore(value: 0) refreshTokens { semaphore.signal() } semaphore.wait() } return ["Authorization": "Bearer …
26 апр '19 в 15:41
0 ответов

Вложенность DispatchSemaphore

У меня проблемы с приведенным ниже рисунком. Мне нужно синхронно ждать начального асинхронного запроса, когда блок завершения в свою очередь вызывает список асинхронных вызовов, где каждый из асинхронных вызовов должен ждать завершения предыдущего, …
23 апр '19 в 09:12
1 ответ

Могу ли я использовать DispatchSemaphore для управления потоком в главной очереди?

Видимо, я могу использовать DispatchSemaphore, только если имею дело с разными очередями. Но что, если я хочу запустить асинхронный код в той же очереди (в данном случае основной очереди). let s = DispatchSemaphore(value : 0) DispatchQueue.main.asyn…
28 авг '19 в 16:14
3 ответа

проект инструмента командной строки быстрого семафора дождитесь завершения группы

Кажется , не ждите конца группы let oneSem_1 = DispatchSemaphore(value: 1) let semaphore = DispatchSemaphore(value: 4) let semaphoreEND = DispatchSemaphore(value: 0) var p=0 let group_2 = DispatchGroup() var t:[Int]=[] let MAX=1000000 for _ in 0..&l…
05 сен '19 в 12:19
1 ответ

Почему DispatchSemaphore.wait() блокирует этот обработчик завершения?

Итак, я играл с NetworkExtension, чтобы создать игрушечную реализацию VPN, и я столкнулся с проблемой с обработчиками завершения / асинхронно работающим кодом. Я расскажу вам о своих мыслях / истечениях срока действия и буду признателен за любые ука…
2 ответа

Блокирует ли DispatchSemaphore на основе QOS весь пул потоков

let semaphore = DispatchSemaphore(value: 1) DispatchQueue.global(qos: .background) Означает ли это, что если я использую этот семафор, чтобы сделать конкретный блок ресурса доступным только для одного потока за раз, он будет блокировать все потоки, …
17 сен '19 в 15:42
1 ответ

Как работать Dispatch_Sempahore при первом сигнале вызова и

Можно ли сначала вызвать Signal () во время функции DispatchSemaphore, а позже - Wait()? Если вызывать Signal() N непрерывно, значение внутри становится N, или мне интересно, не вызывает ли несколько раз Signal () увеличение значения, когда Wait() н…
06 фев '20 в 06:22
0 ответов

Функция UIKeyInput deleteBackward() аварийно завершает работу из-за одновременного вызова insertText()

Я пишу приложение для машинного обучения, которое действует как клавиатура. Оно используетUIKeyInput и .target.insertText()метод для вставки результатов машинного обучения. Я реализовал ключ удаления, используяtarget?.deleteBackward()и имеют периоди…
1 ответ

Как сделать общий ресурс потокобезопасным при использовании диспетчерской группы?

У меня есть класс User, который нужно обновлять каждый раз, когда пользователь открывает приложение. class User : NSObject, NSCoding { var vehicles : [Vehicles] var bankaccounts : [BankAccounts] var friends : [Friends] } На моем домашнем экране View…
1 ответ

Должен ли семафор ждать, а сигнал всегда вызываться из отдельных очередей?

Я просматривал правильные детали реализации семафора с использованием GCD, когда меня смутил один оператор из (https://khanlou.com/2016/04/the-GCD-handbook/): "Вызов.wait() заблокирует поток до тех пор, пока Вызывается.signal(). Это означает, что.si…
1 ответ

Может ли диспетчерский семафор случайно зайти в тупик?

Скажем, у нас есть общий ресурс, к которому имеет доступ множество разных глобальных очередей, и ради этого вопроса мы используем семафор отправки для управления этим доступом. Когда одна из этих глобальных очередей сообщает семафору о необходимости…
3 ответа

Диспетчерский семафор для пользовательского интерфейса

Я хотел оживить альфа-версию uiviews, но не могу этого сделать. Он ведет себя странно и сообщает об ошибке, что изменения пользовательского интерфейса не рекомендуется запускать в фоновом потоке, но я не знаю, как заставить его работать в основном п…
22 апр '21 в 14:40
1 ответ

до сих пор не могу понять, как заказать асинхронные задачи для удаления пользователя

Поэтому я пытаюсь обеспечить выполнение набора асинхронных задач в определенном порядке при удалении пользователя. Итак, что я хочу: Проверьте, добавил ли пользователь гостей к своей покупке если у пользователя нет гостей или каких-либо покупок, вер…
1 ответ

как исправить зависание приложения после вызова семафора

Я читал этот вопрос о зависаниях приложений и семафорах, и я попытался реализовать ответ в своем коде, но он все еще зависает в моем приложении, несмотря на вызов пользовательского интерфейса в основном потоке. Моя цель - предотвратить зависание при…
0 ответов

dispatchGroup.notify вызывается перед выполнением группы - быстро - программно

я использую DispatchGroup, DispatchSemaphore а также DispatchQueue для добавления элементов модели в правильном порядке в массив. fileprivate func getLatestImageForUids(_ uids: [String], completion: @escaping () -> Void){ let db = Firestore.fires…
2 ответа

асинхронные запросы в Swift с использованием обработчика завершения и DispatchSemaphore

я пытаюсь сделать asyncзапросы на Swift с использованием Alamofire's completion handlerа также DispatchSemaphores . Мне нужно получить ответ, а затем вернуть его другому методу, так что в основном это мой код func customRequest(zipCode: String) -&gt…
06 янв '21 в 01:16
0 ответов

Как правильно освободить семафор?

Шаги для воспроизведения сбоя:если вызывается semaphore.wait(), а затем деинициализируется контроллер представления, которому он принадлежит, перед вызовом semaphore.signal, приложение аварийно завершает работу. Получение ошибки ниже при dinit класс…
2 ответа

Невозможно разорвать цикл с семафором

Я пытаюсь добавить список асинхронных задач при использовании . func performStickerWorkItems(_ stickers: [String]) { let queue = DispatchQueue.global(qos: .background) workItem = DispatchWorkItem { [weak self] in for sticker in stickers { guard let …
1 ответ

Безопасно ли сигнализировать семафор перед деинициализацией на всякий случай?

class SomeViewController: UIViewController { let semaphore = DispatchSemaphore(value: 1) deinit { semaphore.signal() // just in case? } func someLongAsyncTask() { semaphore.wait() ... semaphore.signal() // called much later } } Если я скажу семафор…
0 ответов

Как сделать несколько асинхронных загрузок в хранилище Firebase?

У меня есть массив данных, которые я хочу загрузить в хранилище Firebase по порядку, поэтому URL-адреса загрузки, которые извлекаются, тоже в порядке. Я пытался использовать DispatchGroup и DispatchSemaphore для этого, но я предполагаю, что вставил …