Что означает 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, если таковые имеются....

Я только скопировал первое предложение из документации каждого флага. Нажмите на ссылку для более подробной информации.

Другие вопросы по тегам