А что будет если ?

No comments
  • Alver
    Вопрос конечно интересный.
    Делаю ставку на E.
    Тотализатор открыт...
  • Недавно в описании функций обнаружил такое:
    Функция 23 - ожидать события с таймаутом.
    ...
    Возвращаемое значение:
    • eax = 0 - очередь сообщений пуста
    • ...

    Замечания:
    • ...
    • При текущей реализации произойдёт немедленный возврат из функции с eax=0, если сложение ebx с текущим значением счётчика времени вызовет 32-битное переполнение.

    Т.е. ждать осталось не долго :-). Хотя, наверное, совпадение событий будет редким.

    ..bw
  • Alver
    Правильный ответ - A. Само по себе ядро идентификаторы не использует, для него потоки определяются слотами, а номер слота всегда меньше 256. TID'ы увеличиваются на 1 для каждого нового процесса/потока (да, кстати: с формальной точки зрения в Колибри нет понятия процесса, а есть только потоки), и на переполнение ядру забить.
    bw
    Переполнение счётчика времени наступает каждые 2^32/100 секунд, то есть немного больше 497 суток. Долго придётся ждать :) Так что через каждые 497 суток наступает интервал в ebx сотых долей секунды, когда вызов 23-й функции будет работать немного странно, хотя никаких глюков от этого не будет.
  • diamond, а, ну да, если не использовать bochs :-). Я что то про тысячные подумал. А почему именно сотые использутся?

    ..bw
  • bw
    Да, про bochs я забыл - там ждать придётся меньше :) 1/100 секунды - это частота тиканья таймера в Менуэт/Колибри, так что все времена выражаются в этих единицах. Ну а почему программы переключаются именно 100 раз в секунду - по мнению всех ядерщиков, начиная с Велика, это вполне нормальное число, не слишком большое, чтобы не тратить много времени на переключение задач, но и не слишком маленькое, чтобы сохранять достаточную реакцию на происходящие события.
  • Who is online

    Users browsing this forum: No registered users and 26 guests