Вход на той же строке, как произведено в c#?

Я раньше задавался вопросом много о том же!

основной цикл GUI А похож на это в псевдокоде:

void App::exec() {
    for(;;) {
        vector<Waitable> waitables;
        waitables.push_back(m_networkSocket);
        waitables.push_back(m_xConnection);
        waitables.push_back(m_globalTimer);
        Waitable* whatHappened = System::waitOnAll(waitables);
        switch(whatHappened) {
            case &m_networkSocket: readAndDispatchNetworkEvent(); break;
            case &m_xConnection: readAndDispatchGuiEvent(); break;
            case &m_globalTimer: readAndDispatchTimerEvent(); break;
        }
    }
}

, Что такое "Waitable"? Ну, это - системный иждивенец. На UNIX это назвало "дескриптор файла", и "waitOnAll":: выберите системный вызов. Так называемое vector<Waitable> ::fd_set на UNIX, и "whatHappened" на самом деле запрашивается через FD_ISSET. Фактические waitable-дескрипторы получены различными способами, например m_xConnection может быть взят от:: XConnectionNumber (). X11 также обеспечивает высокий уровень, портативный API для этого-:: XNextEvent () - но если бы необходимо было использовать это, Вы не были бы в состоянии ожидать на нескольких источниках события одновременно .

, Как блокирование работает? "waitOnAll" является syscall, который говорит ОС помещать Ваш процесс в "список сна". Это означает, что Вам не дают процессорного времени, пока событие не имеет место на одном из waitables. Это, тогда, означает, что Ваш процесс неактивен, используя 0% ЦП. Когда событие будет иметь место, Ваш процесс будет кратко реагировать на него и затем возвращаться к состоянию ожидания. Приложения для GUI тратят почти весь их время, бездействуя.

, Что происходит со всеми циклами ЦП, в то время как Вы спите? Зависит. Иногда другой процесс будет иметь использование для них. В противном случае Ваша ОС будет занятый цикл ЦП, или помещать его во временный режим низкой мощности, и т.д.

, спросите для получения дальнейшей информации!

6
задан Atomix 19 September 2009 в 01:08
поделиться

2 ответа

Используйте System.Console.Write вместо System.Console.WriteLine

18
ответ дан 8 December 2019 в 03:53
поделиться

Это будет

Console.Write("Input a number: ");

// It will return the entire string after the user hits enter
string theNumber = Console.ReadLine();

int number = 0;

if(int.TryParse(theNumber, out number))
{
  // Do something with the number
}
9
ответ дан 8 December 2019 в 03:53
поделиться
Другие вопросы по тегам:

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