Skip to content

Instantly share code, notes, and snippets.

@dduan
Created October 12, 2018 02:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dduan/1055b198e39a70f1d98160a987e196ce to your computer and use it in GitHub Desktop.
Save dduan/1055b198e39a70f1d98160a987e196ce to your computer and use it in GitHub Desktop.
import Dispatch
class Runner {
var observers = [String: () -> Void]()
let queue = DispatchQueue(label: "foo-queue")
func run() {
let observers = self.observers
for _ in 0..<20000 {
let c: () -> Void = { [weak self] in
self?.queue.async { [weak self] in
self?.observers.removeValue(forKey: "")
}
}
self.observers[""] = c
c()
for (_, observer) in self.observers {
DispatchQueue.main.async {
observer()
}
}
}
}
}
Runner().run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment