Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用非线程安全CIFilter的多线程处理_Objective C_Ios_Multithreading_Exc Bad Access - Fatal编程技术网

Objective c 使用非线程安全CIFilter的多线程处理

Objective c 使用非线程安全CIFilter的多线程处理,objective-c,ios,multithreading,exc-bad-access,Objective C,Ios,Multithreading,Exc Bad Access,声明类不是线程安全的,并且“每个线程必须创建自己的CIFilter对象”。我正在这样做,但我仍然经常遇到坏访问崩溃。导致崩溃的示例代码: - (CIImage *) outputCIImage { CIFilter *monochromeFilter = [CIFilter filterWithName:@"CIColorMonochrome" keysAndValues: kCIInputImageKey, self.inputCIImage, @"inputColor"

声明类不是线程安全的,并且“每个线程必须创建自己的
CIFilter
对象”。我正在这样做,但我仍然经常遇到坏访问崩溃。导致崩溃的示例代码:

- (CIImage *) outputCIImage {

  CIFilter *monochromeFilter =
  [CIFilter filterWithName:@"CIColorMonochrome" keysAndValues:
   kCIInputImageKey, self.inputCIImage,
   @"inputColor", [LSMonochromeFilter CIColorForFilterColor:self.color],
   @"inputIntensity",[NSNumber numberWithFloat:1.0], nil];

  return monochromeFilter.outputImage;
}

此代码最多从10个线程并行调用。我无法找出原因,因为看起来线程之间的
CIFilter
实例应该彼此完全隔离。有什么想法吗?

仅仅因为过滤器在每个线程中是分开的,并不意味着它们访问的资源在每个线程中是分开的。似乎您需要在使用CoreImage时设置互斥锁或其他类型的锁或同步。

仅仅因为过滤器在每个线程中是独立的,这并不意味着它们访问的资源在每个线程中是独立的。如果你在使用CoreImage时使用了互斥锁或其他类型的锁或同步,问题会消失吗?太好了,这似乎解决了问题!谢谢请随意将其作为答案发布,我会将其标记为已接受。我已将其添加为完整答案。谢谢