Информация об изменениях

Сообщение Re[6]: внутренняя реализация std::mutex? от 17.05.2018 15:49

Изменено 17.05.2018 15:50 AlexGin

Re[6]: внутренняя реализация std::mutex?
Здравствуйте, netch80, Вы писали:

N>Не знаю, при каком шедулере такое возможно.

N>В нормальном, пусть даже при N ядрах у нас N рабочих тредов в пуле, задача реакции на пользователя всё равно получит свои кванты, хоть и заметно меньше.
N>Если же сделать N-1 рабочий тред, то должно хватить места на заметную активность всех других видов.
N>(Считаю, что других задач на машине не крутится. А вообще для таких вещей надо делать конфигурируемый параметр.)

AG>>Вполне возможно, что в цикле рабочего потока ::Sleep(100) — не вызовет катастрофических задержек.

AG>>Однако, вызвав диспетчер потоков позволит пользователю как-то общаться с машиной, когда запущена твоя вычислительная задача.
AG>>В противном случае — компьютер становиться страшно тормознутым и практически не управляемым

N>Уточните, под какой ОС такое происходит.


Последний раз видел такую ситуацию — примерно пять лет назад под Windows XP.
С тех пор я стараюсь (в моих разработках) давать возможность переключиться на диспетчер потоков — это Sleep или WaitingFor... системные вызовы.

N>Честно, у меня как-то не наблюдалось. Но у меня уже лет 20 что сервера, что десктопы/лаптопы почти сплошь Linux и FreeBSD.


А разве в мире Linux, что? Разве не будет такой же ситуации?
Если на каждом из ядер крутится свой поток, и не даёт возможности "вклиниться" диспетчеру потоков, то там должно быть аналогично.
Хотя, допускаю, что при определенных настройках для Linux этот эффект тормозов можно сделать не так заметным.

N>Но в общем случае я поправку принимаю, с нормальными шедулерами она не должна сильно помешать, а с кривыми — поверю, что помогает.


Предположим, что у нас обычный офисный комп с Win10/Win7.
У меня есть приложение, которое (выполняя определенную работу) — дико тормозит все мои пользовательские действия.
Что я могу сделать, как пользователь? Что могу сделать, если приложение сторонее и я НЕ имею его исходных кодов?
Re[6]: внутренняя реализация std::mutex?
Здравствуйте, netch80, Вы писали:

N>Не знаю, при каком шедулере такое возможно.

N>В нормальном, пусть даже при N ядрах у нас N рабочих тредов в пуле, задача реакции на пользователя всё равно получит свои кванты, хоть и заметно меньше.
N>Если же сделать N-1 рабочий тред, то должно хватить места на заметную активность всех других видов.
N>(Считаю, что других задач на машине не крутится. А вообще для таких вещей надо делать конфигурируемый параметр.)

AG>>Вполне возможно, что в цикле рабочего потока ::Sleep(100) — не вызовет катастрофических задержек.

AG>>Однако, вызвав диспетчер потоков позволит пользователю как-то общаться с машиной, когда запущена твоя вычислительная задача.
AG>>В противном случае — компьютер становиться страшно тормознутым и практически не управляемым

N>Уточните, под какой ОС такое происходит.


Последний раз видел такую ситуацию — примерно пять лет назад под Windows XP.
С тех пор я стараюсь (в моих разработках) давать возможность переключиться на диспетчер потоков — это Sleep или WaitingFor... системные вызовы.

N>Честно, у меня как-то не наблюдалось. Но у меня уже лет 20 что сервера, что десктопы/лаптопы почти сплошь Linux и FreeBSD.


А разве в мире Linux что-то принцыпиально иначе? Разве не будет такой же ситуации?
Если на каждом из ядер крутится свой поток, и не даёт возможности "вклиниться" диспетчеру потоков, то там должно быть аналогично.
Хотя, допускаю, что при определенных настройках для Linux этот эффект тормозов можно сделать не так заметным.

N>Но в общем случае я поправку принимаю, с нормальными шедулерами она не должна сильно помешать, а с кривыми — поверю, что помогает.


Предположим, что у нас обычный офисный комп с Win10/Win7.
У меня есть приложение, которое (выполняя определенную работу) — дико тормозит все мои пользовательские действия.
Что я могу сделать, как пользователь? Что могу сделать, если приложение сторонее и я НЕ имею его исходных кодов?