насколько мне известно это ограничения X-сервера, ну не понимает он ассинхронные запросы от разных потоков.
В свое время пыталась написать многопоточное приложение в котором из разных потоков были обращения к иксам, никакая синхронизация ему не помогла, прога работала очень нестабильно. Если кто-нибудь знает как решить проблему будеть очень интересно узнать.