You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

18 lines
365 B

2 years ago
  1. import Foundation
  2. internal extension DispatchQueue {
  3. private static var _onceTracker: [String] = []
  4. static func once(token: String, block: () -> Void) {
  5. objc_sync_enter(self)
  6. defer { objc_sync_exit(self) }
  7. if _onceTracker.contains(token) {
  8. return
  9. }
  10. _onceTracker.append(token)
  11. block()
  12. }
  13. }