     - parameter closure: Closure to execute inside of the lock.
     - returns: False if it failed to acquire the lock, otherwise true.
     */
-    public func tryaround(closure: () -> Void) -> Bool {
+    public func tryaround(@noescape closure: () -> Void) -> Bool {
         let held = OSSpinLockTry(&spinlock)
         if !held {
             closure()


Example: let running = synchronized(self) { return true }
*/
public func synchronized<T>(lock: AnyObject, closure: () -> T) -> T {
    objc_sync_enter(lock)
    let result: T = closure()
    objc_sync_exit(lock)

    - parameter closure: Closure to execute inside of the lock.
    - returns: The result of the closure.
    */
    public func around<T>(@noescape closure: () -> T) -> T {
        OSSpinLockLock(&spinlock)
        let result: T = closure()
        OSSpinLockUnlock(&spinlock)
