Задать вопрос

Как правильно реализовать многопоточный рендер в .NET?

Доброе время суток!

Сейчас пытаюсь реализовать многопоточный графический движек с использованием .NET. И хочу разобраться с различными аспектами его правильной реализации. Есть несколько вопросов:
  • Допустимо ли в главном потоке проводить рендеринг, а во втором(фоновом) в момент рисования проводить обновление данных?
  • Правильно ли использовать Thread для такого потока, с таким бесконечным циклом:do { ...} while(canRunThread); ?
    И внутри этого цикла использовать Task для асинхронной работы функции обновления?

  • Как правильно обеспечивается взаимодействие потоков? Есть ли возможность использовать события или асинхронность?
  • Будет ли ускорение рендеринга при использовании дополнительного буфера? Логика такова - в основном потоке крутится приложение, в фоновом потоке крутится рендерер, который рисует в условный буфер, битмап и т.д., а в остальных потоках физика, логика, и т.д. После того, как эти потоки обновления состояния завершили работу, они сохраняют результат в памяти и начинают по новой, поток-рендерер рисует этот результат в битмап, и когда закончит
    - основной поток отрисовывает этот битмап-буфер на экране. Или достаточно обойтись просто хранением результата и рендерить при его обновлении?
  • Вопрос задан
  • 845 просмотров
Подписаться 5 Сложный 1 комментарий
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы