0
從我讀到的,核心圖形應該是線程安全的。然而,當我在後臺線程(通過NSOperationQueue)運行下面的代碼時,我的Cocoa應用程序的CPU幾乎達到100%,程序變得沒有響應。在後臺線程調整CAImageRef導致100%的CPU和崩潰
如果我從主線程運行相同的代碼,它工作正常。
- (CGImageRef) createResizedImageFrom:(CGImageRef)image withSize:(CGSize) size {
CGColorSpaceRef colorspace = CGImageGetColorSpace(image);
if (CGColorSpaceGetModel(colorspace) == kCGColorSpaceModelIndexed) {
CGColorSpaceRelease(colorspace);
NSLog(@"Indexed color space not supported.");
return nil;
}
CGContextRef context = CGBitmapContextCreate(NULL, size.width, size.height,
CGImageGetBitsPerComponent(image),
CGImageGetBytesPerRow(image),
colorspace,
kCGImageAlphaPremultipliedFirst);
CGColorSpaceRelease(colorspace);
if(context == NULL)
return nil;
CGContextDrawImage(context, CGRectMake(0, 0, size.width, size.height), image);
CGImageRef imgRef = CGBitmapContextCreateImage(context);
CGContextRelease(context);
return imgRef;
}
我暫停了調試器的過程,但在線程堆棧跟蹤中找不到任何東西。我不知道是什麼導致CPU飆升。除了使上面的代碼線程安全之外,還有什麼需要做的嗎?
謝謝,馬克。