У нас есть API, который обрабатывает таймеры событий. Этот API говорит, что он использует обратные вызовы ОС для обработки событий по времени (очевидно, используя select ()).
API запрашивает этот порядок выполнения:
читаемые события
записываемые события
таймер событий
Это работает путем создания точки для объекта Timer, но передачей функции create обратного вызова функции:
Что-то в этом роде:
Timer* theTimer = Timer::Event::create(timeInterval,&Thisclass::FunctionName);
Мне было интересно, как это работает?
Операционная система обрабатывает сам таймер, и когда он видит, что он срабатывает, как он фактически вызывает обратный вызов? Работает ли обратный вызов в отдельном потоке выполнения?
Когда я помещаю вызов pthread_self () в функцию обратного вызова (Thisclass :: FunctionName), кажется, что он имеет тот же идентификатор потока, что и поток, в котором создается theTimer! (Очень смущен этим)
Также: что означает этот список приоритетов выше? Что такое записываемое событие против читаемого события против события таймера?
Любое объяснение использования select () в этом сценарии также приветствуется.
Спасибо!