2011-11-24 2 views
3

В настоящее время я пытаюсь создать часть программного обеспечения для захвата экрана.Как удалить эту круговую зависимость

Один вопрос конструкции у меня есть Я хочу знать, можно ли устранить круговую зависимость между PictureGetter и PictureProcessor.

Получателю необходимо вызвать процессор, чтобы сообщить ему, что изображение готово. Процессор должен сказать получателю, что он обрабатывает изображение.

Эти два элемента находятся в отдельных потоках и не могут совместно использовать данные напрямую (и я не хочу обмениваться данными), они могут только добавлять вызовы членов целевого объекта в очередь очереди этого объекта. (Например queue.add(&PictureProccessor::sendPicture,picture))

enter image description here

+0

http://www-subatech.in2p3.fr/~photons/subatech/soft/carnac/CPP-INC-1.shtml – Cyclonecode

+0

Да, я знаю, что могу пересылать все объявления. Это вопрос о том, есть ли способ, который я могу создать вокруг этого. – Lalaland

+0

И ваш вопрос? – themel

ответ

6

Используйте менеджер ресурсов, чтобы и знать об этом. Геттер может вставить изображение, которое будет обрабатываться менеджером, тогда менеджер может иметь «пул» процессоров, из которых можно использовать для обработки. Процессор может помещать обработанное изображение диспетчером ресурсов, который затем может уведомлять соответствующего получателя. Я уверен, что есть какое-то фанковое имя для этого шаблона, но не могу вспомнить его прямо сейчас.

+0

Да, это то, что я искал (и это также решает проблему управления картинкой). Спасибо. – Lalaland

0

Возможно, создать очередь из 1 элемента от получателя к процессору.

Getter посылает pic. Очередь пуста, когда процессор выполнен.

Смежные вопросы