0
docs for CIFilter
은 클래스가 스레드로부터 안전하지 않으며 "각 스레드는 자체 CIFilter
개체를 만들어야합니다"라고 말합니다. 나는 그 일을하고 있지만 여전히 액세스 빈도가 매우 높습니다. 충돌을 일으키는 예제 코드 :비 스레드 세이프 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 사용과 관련하여 뮤텍스 또는 다른 유형의 잠금 또는 동기화를 설정하면 문제가 해결됩니까? – user1118321
위대한, 그 문제를 해결 한 것 같습니다! 감사! 대답을 자유롭게 게시하면 받아 들일 수 있습니다. – marcog
전 대답으로 추가했습니다. 감사! – user1118321