RealTime Priority и второе ядро

Тема в разделе "WASM.WIN32", создана пользователем Ivan_d, 2 фев 2007.

  1. Ivan_d

    Ivan_d New Member

    Публикаций:
    0
    Регистрация:
    9 янв 2007
    Сообщения:
    27
    В своей программе я использую RealTime-приоритет процесса, чтобы быть уверенным, что выполнение моей программы не прервется другими процессами. Программа ждет начала кадра, выполняет небольшую отрисовку на экране с помощью blt() и засыпает до следующего кадра.

    При переходе на двухядерный процессор появился неприятный эффект, когда при попытке обращения к системным функциям типа blt() мой процесс иногда пропускал кадры, т.к. какой-либо системный или другой процесс работающий в другом ядре активно использовал эти же системные функции.

    Вопрос - как избежать такого неприятного эффекта, как отсутствие мнгновенной доступности системных функций, из-за использования их другими процессами в других ядрах?
     
  2. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    попробуй поиграть с SetProcessAffinityMask - может что и получится
     
  3. Ivan_d

    Ivan_d New Member

    Публикаций:
    0
    Регистрация:
    9 янв 2007
    Сообщения:
    27
    Тут вопрос стоит не в том, чтобы назначить потокам моего процесса определенные процессорные ядра. А вопрос в том, как избежать захватывания системного ресурса (например блиттера) чужим процессом, работающим в другом ядре.
    Т.е. в одном ядре работает мой процесс с RealTime приоритетом, и естественно вытесняет все другие процессы. Но в другом ядре может работать процесс совершенно чужой программы, с каким-нибудь низким приоритетом (например даже IDLE), и при этом забирать на себя системные ресурсы (например тот же блиттер), лишая меня мгновенного доступа к этому системному ресурсу...