Даже не знаю как сформулировать. Так что приведу пример.
Допустим я решил сделать текстовый редактор с подсветкой синтаксиса. Но подсветка синтаксиса должна срабатывать не когда я нажимаю какую-то кнопку, а в реальном времени.
Как такое делается? Даже не знаю как это загуглить.
Многопоточность. Один поток ждет ввода с клавиатуры, другой проверяет и подсвечивает синтаксис, третий часики в углу рисует, четвертый на фоне сохраняет текущее во временный файл...
Это значит вводишь ты букву, и тут же происходит анализ синтаксиса. Как-то так. Вот, мне уже подсказали, что можно и без потоков реализовать, но будет "месиво" и по времени выполнения дольше. А если таких задач больше двух то тем более потоки нужны, так что направление мне правильное задали.
Егор Марчук: в общем случае без потоков нельзя решить эту задачу. Если анализ сложный, то он может отрабатывать несколько секунд. В это время пользователь не сможет редактировать текст. Формально то текстовый редактор работать будет...
fshp: Несколько секунд? Да ну! Я тестировал три версии функций поиска совпадений числа (подряд) в массиве на 200 000 000 (двести миллионов) элементов. Результат: от 0,9 до 1,3 секунды (от самой тормозной, до самой быстрой). Так что это будут сотые доли секунды максимум.
Егор Марчук: не сравнивайте линейный поиск, да еще и числовых элементов, с синтаксическим анализом. Откройте в IDEA любой java-файл на пару тысяч строк.
fshp: Да, я понял (но Java сам по себе тормозной). Пока речь идет только о том, чтобы иметь константный массив указателей с ключевыми словами и искать в нем слова, и при совпадении, в зависимости от индексного диапазона (и соответственно смысла ключевого слова), менять цвет этого слова. Просто учебная программа)
В реальном времени - это не на windows или Linux
Нужна операционная система реального времени.
А вот в фоновом режиме - то "почти сразу" - выше уже расписали про могопоточность.
Многопоточность (multithreading) -- это и есть квазипараллельность. Для пользователя это незаметно все равно.
Есть еще распараллеливание по ядрам. Сейчас же все ПК многоядерные, минимум 2 ядра на каждом.
Егор Марчук: но это совсем не режим реального времени. Думаю не надо объяснять чем он отличается от тредингов и любых других режимов аппаратной, программной и других вариантов реализации квазипараллельности
d-stream: В устройстве операционных систем я понимаю мало. Наверно Linux и Windows не могут использовать многоядерность на полную. Не знаю. Вот Википедия:
"Реальное время в операционных системах — это способность операционной системы обеспечить требуемый уровень сервиса в определённый промежуток времени."
"Хорошая ОСРВ имеет предсказуемое поведение при всех сценариях нагрузки, включая одновременные прерывания и выполнение потоков."