Merge pull request #169 from dgrove-oss/fast-path-for-barrier
Add fast path for queue.async(flags: .barrier)
diff --git a/src/swift/Queue.swift b/src/swift/Queue.swift
index 8db1b68..155be8a 100644
--- a/src/swift/Queue.swift
+++ b/src/swift/Queue.swift
@@ -181,10 +181,15 @@
flags: DispatchWorkItemFlags = [],
execute work: @escaping @convention(block) () -> Void)
{
- if group == nil && qos == .unspecified && flags.isEmpty {
+ if group == nil && qos == .unspecified {
// Fast-path route for the most common API usage
- CDispatch.dispatch_async(self.__wrapped, work)
- return
+ if flags.isEmpty {
+ CDispatch.dispatch_async(self.__wrapped, work)
+ return
+ } else if flags == .barrier {
+ CDispatch.dispatch_barrier_async(self.__wrapped, work)
+ return
+ }
}
var block: @convention(block) () -> Void = work