У меня есть входящий поток сообщений, и я хочу окно, которое позволяет пользователю прокручивать сообщения. < /p>
Это мое текущее мышление: < /p>
[*] Входящие сообщения заходят в однородную очередь одного потребителя < /li>
Поток считывает их и помещает их в круглый буфер с последовательным id < /li>
Таким образом, я мог бы иметь несколько входящих потоков, безопасно размещенных в круговом буфере, и он разместит вход < /li>
Mutex для координации круглого буфера между UI и поток
[*] Два уведомления от потока до UI One для первого идентификатора и одно для последнего идентификатора в буфере, когда они либо меняются.
Это позволяет пользовательскому интерфейсу выяснить, что он может отобразить, какие части круглого буфера он нуждается в доступе, удаляет перезаписанные сообщения. Он доступ к сообщениям, необходимым для заполнения окна в его текущем размере и положении прокрутки. UI. Он будет генерироваться с высокой частотой. Они могут быть в очереди или иным образом дроссель; Задержка не должна влиять на первый идентификатор, но задержки при обработке последнего идентификатора могут вызвать проблемы в угловых случаях, таких как просмотр самого конца полного буфера , если пользовательский интерфейс не сделает копию отображающих сообщений, которые отображаются, которые отображают, что Я хотел бы избежать. < /P>
Это звучит как правильный подход? Какие -то изменения, которые могут сделать его немного более вкусным?
Подробнее здесь: https://stackoverflow.com/questions/160 ... -real-time