Size: a a a

2021 February 08

bt

baby tonight in pro.cxx
спасибо
источник

AR

Alexandr Rudalev in pro.cxx
baby tonight
sleep_for и sleep_until не гарантируют, что поток не будет заблокирован дольше указанного времени, а если это принципиально и нужно заснуть именно на это время, как добиться гарантии пробуждения вовремя?
1. Что значит именно столько времени? Время на компьютере не обязано идти равномерно (постройка под NTP и т.п.), плюс заранее надо обговорить погрешность (процесс не один, да и диспетчер не всесилен)
2. По умолчанию более или менее ожидаемо работают десятки вызовов в секунду. Далее надо настраивать диспетчер задач. В Линукс есть RT-патч.
3. Для большей частоты и точности RTOS на отдельном ядре/железе.
4. Тестирую, может и то что есть устроит
источник

ИI

И Ivan in pro.cxx
Можно сделать цикл
while(true)
в котором проверять, достигли нужного времени или нет. Цикл не должен содержать sleep, yield и т.п. Правда, такой цикл будет выедать весь ресурс ядра процессора, зато очень точно
источник

AR

Alexandr Rudalev in pro.cxx
И Ivan
Можно сделать цикл
while(true)
в котором проверять, достигли нужного времени или нет. Цикл не должен содержать sleep, yield и т.п. Правда, такой цикл будет выедать весь ресурс ядра процессора, зато очень точно
Это не даст гарантии что процесс на пару миллисекунд не будет работать.
источник

S

SupaproBot in pro.cxx
@karapetyan_m Ваш вопрос перемещён в чат @supapro . Там Вам с радостью помогут с Вашей проблемой :)
источник

ИI

И Ivan in pro.cxx
Alexandr Rudalev
Это не даст гарантии что процесс на пару миллисекунд не будет работать.
Ну, если кто-то отберет у него контекст то да. А вот интересно, кто-то может отобрать контекст от процесса не на системном вызове?
источник

АК

Александр Караев... in pro.cxx
И Ivan
Ну, если кто-то отберет у него контекст то да. А вот интересно, кто-то может отобрать контекст от процесса не на системном вызове?
иначе я бы мог запустить N процессов в while (true) {} и убить ОС
источник

AR

Alexandr Rudalev in pro.cxx
И Ivan
Ну, если кто-то отберет у него контекст то да. А вот интересно, кто-то может отобрать контекст от процесса не на системном вызове?
1. Запрос текущего времени -это системная функция.
2. Диспетчер выдаёт квант времени потокам, после чего определяет кто будет следующий
источник

ИI

И Ivan in pro.cxx
2. А где будет находится диспетчер, если все ядра заняты while (true)?
источник

D

Dmitriy in pro.cxx
И Ivan
2. А где будет находится диспетчер, если все ядра заняты while (true)?
Каким образом все потоки ядра будут заняты?
источник

ИI

И Ivan in pro.cxx
Dmitriy
Каким образом все потоки ядра будут заняты?
Ну например запустить на каждом потоке while (true)
источник

D

Dmitriy in pro.cxx
Да хоть обзапускайся - плевать он хотел на твои пользовательские потоки)
источник

RL

R L in pro.cxx
Добрый день коллеги, возникла проблема с извлечением текста из pdf, сейчас используется pdftotext (popler utils), суть проблемы в том, что при извлечении текста на некоторые страницы тратится 2-3 секунды (в то время как на некоторые другие по 5-8 мс), хотел уточнить, есть ли смысл искать узкое место в утилите и попробовать переписать парсер или проблема связана с самим документом pdf?
источник

ИI

И Ivan in pro.cxx
Не, ну предположим весь процессор со всеми потоками занят while (true), кто может остановить хоть один из этих потоков? Разве только прерывание
источник

АК

Александр Караев... in pro.cxx
И Ivan
Не, ну предположим весь процессор со всеми потоками занят while (true), кто может остановить хоть один из этих потоков? Разве только прерывание
предлагаю остановить эту дискуссию, так как она не имеет отношения к C++, только к устройству ОС
источник

MK

Mikhail Kalugin in pro.cxx
И Ivan
Не, ну предположим весь процессор со всеми потоками занят while (true), кто может остановить хоть один из этих потоков? Разве только прерывание
Диспетчер потоков (по прерыванию), конечно. Но, таки это теория ОС и тут оффтоп.
источник

MK

Mikhail Kalugin in pro.cxx
R L
Добрый день коллеги, возникла проблема с извлечением текста из pdf, сейчас используется pdftotext (popler utils), суть проблемы в том, что при извлечении текста на некоторые страницы тратится 2-3 секунды (в то время как на некоторые другие по 5-8 мс), хотел уточнить, есть ли смысл искать узкое место в утилите и попробовать переписать парсер или проблема связана с самим документом pdf?
Обычно использую podofo в качестве парсера, poppler - только в качестве рендера, но я бы сначала попробовал понять чем отличаются сами документы, разброс уж слишком большой, такое на кривость кода не спишешь без веской причины.
источник

RL

R L in pro.cxx
Mikhail Kalugin
Обычно использую podofo в качестве парсера, poppler - только в качестве рендера, но я бы сначала попробовал понять чем отличаются сами документы, разброс уж слишком большой, такое на кривость кода не спишешь без веской причины.
Спасибо
источник

DS

Dmitry Sokolov in pro.cxx
Допустимо ли делать через static_cast downcast к типу, наследником которого оригинальный тип не является? При условии что полученный указатель никогда не будет разыменован, разве что через обратный static_cast к базе.
источник

LA

Liber Azerate in pro.cxx
Dmitry Sokolov
Допустимо ли делать через static_cast downcast к типу, наследником которого оригинальный тип не является? При условии что полученный указатель никогда не будет разыменован, разве что через обратный static_cast к базе.
Может, предком которого?..
Но вообще нет: http://eel.is/c++draft/expr.static.cast#11
источник