2013-07-30 4 views
1

Mono.Cairo Homepage says "주 (Gdk) 스레드가 아닌 스레드에서 카이로를 사용하지 마십시오."Mono.Cairo는 자유 스레드입니까, 효율적으로 서버 측에서 사용할 수 있습니까?

이것은 ASP.NET 응용 프로그램과 같이 여러 스레드에서 카이로를 사용하는 데 문제가 있음을 나타냅니다.

공유 데이터가없는 한 Cairo와 Mono.Cairo를 여러 스레드에서 안전하게 사용할 수 있는지 알고 싶습니다. (각 스레드는 자체 컨텍스트/서피스 등을가집니다).

전역 잠금이있는 경우이를 알고 싶습니다. 예를 들어, System.Drawing.Graphics.DrawImage()는 Windows의 여러 버전에서 프로세스 차원의 독점입니다.

나는 관련성이 있거나 그렇지 않을 수도있는 this bug을 발견했습니다.

답변

1

ASP.NET과 Gdk는 완전히 관련이 없습니다. 전자는 HTTP를 다루고, 후자는 스크린과 기본 툴킷 (X11, wayland 등)을 다룹니다.

Mono.Cairo 홈페이지에서 본 제한 사항은 Gtk 앱과 동일합니다. 잘못된 스레드에서 UI를 건드리지 마십시오. 디버그 모드에서이 잘못된 종류의 조작을 런타임에 찾을 수있는 편리한 도구는 gui-thread-check (현재는 Gtk-Sharp3 내에 bundled by default입니다)입니다.