Как XLockDisplay () работает в нескольких процессах? - PullRequest
0 голосов
/ 31 октября 2018

Я имею дело с несколькими процессами, которые читают чертежи друг друга и поэтому нуждаются в синхронизации. XLockDisplay должен "заблокировать все другие потоки" от использования дисплея, но применимо ли это к нескольким процессам?

Кроме того, все ли процессы должны вызывать XInitThreads или только один (ие), вызывающий XLockDisplay?

1 Ответ

0 голосов
/ 06 ноября 2018

Функцию XLockDisplay (и макросы LockDisplay) следует использовать внутри одного и того же приложения XClient, то есть процесса ... Они не имеют никакого смысла для XClients (так, например, для 2 процессов). Это способ защиты от нескольких потоков (т.е. внутри одного и того же процесса), пытающихся получить доступ к одному и тому же соединению X (например, см. GLX-1.4, гл. 2.7)

Чтобы прочитать весь контент (буфер) другого окна, вы можете взглянуть на любое приложение, которое делает снимок экрана с вашего рабочего стола или из одного окна (см., Например, исходный код «scrot»).

Если вы хотите обмениваться данными между XClients, используйте их Свойства / Атомы (см. XLib ICCC).

...