Skip to content

Instantly share code, notes, and snippets.

@farktronix
Created May 7, 2015 21:04
Show Gist options
  • Save farktronix/c1032caaeafeb50d823b to your computer and use it in GitHub Desktop.
Save farktronix/c1032caaeafeb50d823b to your computer and use it in GitHub Desktop.
dispatch_source_type_data_or rocks
_setupQueue = dispatch_queue_create("com.fark.setup", DISPATCH_QUEUE_SERIAL);
_setupSource = dispatch_source_create(DISPATCH_SOURCE_TYPE_DATA_OR, 0, 0, _setupQueue);
dispatch_source_set_event_handler(_setupSource, ^{
[weakSelf _reload];
});
dispatch_resume(_setupSource);
...
- (void)_signalAccountReload {
dispatch_source_merge_data(self.setupSource, 1);
}
@PadraigK
Copy link

PadraigK commented Nov 29, 2019

Obligatory Swift version:

private var serialQueue = DispatchQueue(label: "com.fark.setup",
                                            qos: .default,
                                            attributes: [],
                                            autoreleaseFrequency: .inherit,
                                            target: DispatchQueue.global(qos: .default))

var source = DispatchSource.makeUserDataOrSource(queue: serialQueue)

source.setEventHandler { [weak self] in 
   …
}

source.activate()

source.or(data: 1)

@farktronix
Copy link
Author

💯💯💯

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment