I'm using a CATiledLayer backed NSView (Mac not iOS) and according to Apple docs <https://developer.apple.com/reference/quartzcore/catiledlayer> I expect this to be called asynchronously, on multiple threads to aid performance, however it only appears to ever get called on the main thread.

I'm doing the work in `drawLayer(layer: CALayer, inContext ctx: CGContext)`

I have enabled `canDrawConcurrently` on the NSView as well as ensuring the window has `allowsConcurrentViewDrawing` set as true (default), but it still always calls on the main thread for each tile rect.

I need to do some image manipulation prior to display dependant on the rect area needing display, and running on the main thread impacts performance. 

Any ideas how I can either force it to call on a background thread?

I have tried marshalling the image a operation onto background thread and then recalling the main queue with the following but it displays a blank rect:

```
backgroundQueue.addOperationWithBlock({ [ weak self ] in            
    guard let strongSelf = self else { return }

    // ** This is the part I nee to do in background that can take some time
    guard let image = strongSelf.imageForTileRect(layerBounds, imageSize: imageSize) else { return }
    // ** End background bit

    var rect = layerBounds
    let rectImageRef = image.CGImageForProposedRect(&rect, context: nil, hints: nil)

    if (rectImageRef != nil) {
        NSOperationQueue.mainQueue().addOperationWithBlock({ 
            CGContextDrawImage(ctx, rect, rectImageRef)
        })
    }
})

```