Что означает detached и assignCurrentContext?
Когда я добавляю работу в очередь, DispatchWorkItemFlags дает нам несколько вариантов выбора
public func sync<T>(flags: DispatchWorkItemFlags, execute work: () throws -> T) rethrows -> T
public static let barrier: DispatchWorkItemFlags
public static let detached: DispatchWorkItemFlags
public static let assignCurrentContext: DispatchWorkItemFlags
Я знаю, что барьер делает работу не выполняемой в одно и то же время с другими, но я не знаю, что такое detached и assignCurrentContext, и Apple не дает никакого описания о них, так что, кто может рассказать мне об этом.
1 ответ
Вы можете прочитать о них в dispatch_block_flags_t
руководство:
DISPATCH_BLOCK_ASSIGN_CURRENT
Указывает, что блоку диспетчеризации должны быть назначены атрибуты контекста выполнения, которые являются текущими на момент создания объекта блока....
DISPATCH_BLOCK_BARRIER
Указывает, что блок отправки должен действовать как барьерный блок при отправке в очередь DISPATCH_QUEUE_CONCURRENT....
DISPATCH_BLOCK_DETACHED
Указывает, что блок диспетчеризации должен выполняться, не связанный с текущими атрибутами контекста выполнения, такими как класс QoS, os_activity_t и свойства текущего запроса IPC, если таковые имеются....
Я только скопировал первое предложение из документации каждого флага. Нажмите на ссылку для более подробной информации.