내 Mac OSX 응용 프로그램에는 Core Graphics를 사용하여 2D 라인과 영역을 CGLayer
으로 그려주는 백그라운드 프로세스가 있습니다. 그런 다음 NSView
서브 클래스의 displayRect()
메소드를 통해 주기적으로 사용자에게 표시됩니다.OSX에서 CGLayer에 대한 읽기/쓰기 액세스를 직렬화해야합니까?
현재 GCD 큐를 사용하여 레이어를 읽고 쓰는 작업을 직렬화합니다. 이렇게하면 기본 스레드가 CGContextDrawLayerAtPoint()
을 사용하여 뷰에 드로잉하는 동시에 백그라운드 프로세스를 드로잉 할 수 없습니다. 그러나 이것은 약간의 성능을 필요로합니다.
질문 1 :이 R/W의 직렬화 응용 프로그램의 안정성을 위해 필요한 CGLayer
에 대한 액세스인가? (나는 이상한 그릇된 이미지는 신경 쓰지 않지만 크래시의 위험을 감수하고 싶지 않다).
질문 2 : 나는 여러 동시 프로세스로 도면 작업을 분할한다면, 모두 같은 시간에 레이어에 쓰거나 내가 그들을에는 직렬화해야하도록 허용하는 것이 안전 할 것이다 (할 것이다 무의미의 동시성 종류)?