Войти
ФлеймФорумПрограммирование

Страшный БАГ в Visual C++ (2 стр)

Страницы: 1 2 3 411 Следующая »
#15
20:19, 2 мар. 2020

beejah

> выкинуть нахер то, что сразу тащить не надо было
И заменить на...

> Для чего "этого" и суть чего?
Нужно просыпаться раз в N миллисекунд.

> Если у тебя в системе появился слип - ты вглухую просрал источник синхронизации
Ну, скажем в своей системе я могу написать модуль для плис с жёстким временем, выкинуть из него прерывание, поймать драйвером и отправить в юзерспейс. Что ты предлагаешь делать на x86 я не очень понимаю.


#16
20:20, 2 мар. 2020

Если проспал на работу, кто-то вне матрицы перевёл время.

#17
20:21, 2 мар. 2020

9К720
> Знакома думаю ситуация, когда тест проходит за 200мс, а в случае если что-то
> упало - ждёт N секунд до ассерта.
Нет, лол. Такой херни я не видел никогда.
Я про тот случай, когда тебе нужно сэмулировать задержку снаружи, например, чтобы посмотреть, как живая система проглатывает таймауты, как захлебывается и как раздупляется. Если у тебя весь тест - скрипт, который тупо гонит пакеты в один конец, например, чего заморачиваться.

#18
(Правка: 20:22) 20:21, 2 мар. 2020

9К720

> Вообще в приложениях нельзя полагаться на монотонность времени
На монотонность клоков в процессоре может кодерок полагаться?

#19
20:30, 2 мар. 2020

Ghost2
> Нужно просыпаться раз в N миллисекунд.
Для чего?

> Ну, скажем в своей системе я могу написать модуль для плис с жёстким временем,
> выкинуть из него прерывание,
Прерывание - это вот ну совсем не слип.

> поймать драйвером и отправить в юзерспейс.
Здесь я не понимаю, но, полагаю, ты просто изобрел слип, лол.

> Что ты предлагаешь делать на x86 я не очень понимаю.
ДЛЯ ЧЕГО? Задача какая? Что у нас там такое, что нам нужно на волшебные циферки засыпать?
Шедулинг задач? Обработка внешних событий?

#20
20:43, 2 мар. 2020

beejah

> Для чего?
Обновлять состояние некоторой системы или управлять ею с заданной частотой.

> Прерывание - это вот ну совсем не слип
Прерывание от таймера - это тот же слип, только измеряемый жёстко в тактах.

> Здесь я не понимаю, но, полагаю, ты просто изобрел слип, лол
Ты неправильно полагаешь, потому что не понял. VSync по твоему это слип или нет? Если да, то непонятна твоя к нему нелюбовь. Если нет, то непонятно, почему я выше изобрёл слип, ведь описано реально то же самое, что и VSync.

#21
20:44, 2 мар. 2020

Ghost2
> На монотонность клоков в процессоре может кодерок полагаться?
В реальном или виртуальном?

#22
(Правка: 21:10) 20:53, 2 мар. 2020

Ghost2
> Обновлять состояние некоторой системы
Зачем тебе обновлять состояние системы, в которой ничего не происходило, потому что она спала?
Незачем.

А если что-то происходило - то зачем тебе играть в угадайку, обновляя систему в рандомный момент?
Обрабатывай по мере поступления или исчерпания допустимого ресурса.

> или управлять ею с заданной частотой.
Заданной чем?

> Прерывание от таймера - это тот же слип, только измеряемый жёстко в тактах.
Нет. Прерывание - это прерывание. А многозадачностьпоточность - это многозадачностьпоточность.
Слип - это не про прерывания.

> Ты неправильно полагаешь
Не утверждал обратного.

> VSync по твоему это слип или нет?
Нет, конечно.

#23
21:18, 2 мар. 2020

beejah

> в которой ничего не происходило, потому что она спала
Система не спит, она живет полной жизнью.

> Обрабатывай по мере поступления или исчерпания допустимого ресурса
Вот тут ресурсом является время. До следующего кадра, например, или до наступления некоторого таймаута. С кадром просто, есть API, с таймаутом сложнее.

> Заданной чем?
Техническим заданием. Управлять двигателем, скажем, или считать какую-нибудь физику с заданной частотой, писать видео с экрана N раз в секунду. Не всегда есть возможность где-то взять надежную синхру.

> Нет. Прерывание - это прерывание.
В стране прерываний и драйверов задача "поспать до события или таймаута" - это вполне обычное дело.

> А многозадачность - это многозадачность
Многозадачность то тут причём?

#24
21:19, 2 мар. 2020

beejah

> В реальном или виртуальном?
В реальном конечно.

#25
21:20, 2 мар. 2020

fsmoke
> но я не буду ломать голову почему мой софт завис у клиента если он перевёл
> часы.

это не клиент, а пират.

#26
23:22, 2 мар. 2020

Ghost2
> На монотонность клоков в процессоре может кодерок полагаться?
Нет, у каждого ядра свой клок, они со временем расходятся, и из-за этого возможна ситуация, когда со спешашего ядра программа системным шедулером перекидывается на отстающее прямо посреди измерения, и твоя программа внезапно получает отрицательный дельта-тэ.

#27
(Правка: 23:40) 23:37, 2 мар. 2020

Никакого бага.

The standard recommends that a steady clock is used to measure the duration.
If an implementation uses a system clock instead, the wait time may also be sensitive to clock adjustments.

std::this_thread::sleep_for
By design в общем.

#28
0:08, 3 мар. 2020

Delfigamer

> Нет, у каждого ядра свой клок, они со временем расходятся
А при чем тут клок ядра?

#29
0:45, 3 мар. 2020

beejah
> Для чего "этого" и суть чего?
Для того, чтобы тред ничего не делал, и отдал процессорное время системе. Очевидно помоему. У тебя есть другие предожения, чем заменить данный функционал?

> Если у тебя в системе появился слип - ты вглухую просрал источник
> синхронизации, вглухую просрал вычислительный ресурс, ты - василий.
Бред же. Вот допустим тебе надо написать код, который переодически чекает открытый порт X на некотором сервере. Чтобы когда порт открывается - сделать некоторые действия. Как предлагаешь это делать?

Страницы: 1 2 3 411 Следующая »
ФлеймФорумПрограммирование