Threader
Pretty GCD calls and easier code execution.
Overview
Threader makes GCD calls easy to read & write. It also provides a simple way to execute code where and when you want.
Installation
CocoaPods
Threader is integrated with CocoaPods!
- Add the following to your
Podfile
:
use_frameworks!
pod 'Threader'
- In your project directory, run
pod install
- Import the
Threader
module wherever you need it - Profit
Manually
You can also manually add the source files to your project.
- Clone this git repo
- Add all the Swift files in the
Threader/
subdirectory to your project - Profit
Threader
Using Threader
you can fine-tune where and how code get executed.
Threader.DispatchAsyncMain.execute {
/* Important main-thread code */
}
The above simply executes the code within the block on the main-thread. Naturally, Threader
also provides other execution options:
- Immediate - executes the code block immediately on the current thread.
- DispatchAsync - executes the code block asynchronously on a given
DispatchQueue
. - DispatchAsyncMain - executes code block asynchronously on the main thread.
- DispatchAsyncGlobal - executes the code block asynchronously on the global-queue.
- DispatchAsyncAfter - executes the code block asynchronously at a specified
DispatchTime
, on aDispatchQueue
. - DispatchAsyncBarrier - executes the code block asynchronously blocking on a given
DispatchQueue
. - DispatchSync - executes the code block synchronously on a given
DispatchQueue
. - DispatchSyncBarrier - executes the code block synchronously blocking on a given
DispatchQueue
. - Operation - executes the code block on a given
OperationQueue
. - Block - executes code from a closure.
- Default - executes code on the current thread, or on a global
DispatchQueue
depending on the block of code's current position in the thread.
Dispatching code to a given queue is as easy as:
let queue = DispatchQueue.global()
Threader.DispatchAsync(queue).execute {
/* Important background-thread code */
}
It can even be simplified further:
Threader.DispatchAsync(.global()).execute {
/* Important background-thread code */
}
DispatchQueue
In previous versions of Threader, DispatchQueue
was a small wrapper around C-based GCD calls. However, as of Swift 3, Apple decided to provide their own solution. Not surprisingly, the also named their wrapper DispatchQueue
. Moving forward, Threader will use Apple's native implementation of DispatchQueue
for all GCD related calls.