Size: a a a

pro.graphon (and gamedev)

2020 June 05

CU

Columbus Utrigas in pro.graphon (and gamedev)
Причём поток сам берет таску, когда освободится
источник

S

Stas in pro.graphon (and gamedev)
disba1ancer
вообще мой кейс в том чтобы максимально снизить число простаивающих полезных потоков
А как ты такое вообще можешь гарантировать?
источник

d

disba1ancer in pro.graphon (and gamedev)
Columbus Utrigas
Блин, ну...там очередь
ну вот представь пул из 4ёх потоков, ты задал 8 операций чтения, первые 4 стартанут быстро, а вот остальные, и плюс потоки этого пула заблокируются и не смогут выполнять другие задачи пока читают
источник

CU

Columbus Utrigas in pro.graphon (and gamedev)
Stas
А как ты такое вообще можешь гарантировать?
Свой шедулер
источник

АК

Антон Ковалев... in pro.graphon (and gamedev)
disba1ancer
вообще мой кейс в том чтобы максимально снизить число простаивающих полезных потоков
Пул задач решает эту проблему
источник

S

Stas in pro.graphon (and gamedev)
Columbus Utrigas
Свой шедулер
Но он вроде не его пишет.
источник

CU

Columbus Utrigas in pro.graphon (and gamedev)
disba1ancer
ну вот представь пул из 4ёх потоков, ты задал 8 операций чтения, первые 4 стартанут быстро, а вот остальные, и плюс потоки этого пула заблокируются и не смогут выполнять другие задачи пока читают
Че
источник

АК

Антон Ковалев... in pro.graphon (and gamedev)
disba1ancer
ну вот представь пул из 4ёх потоков, ты задал 8 операций чтения, первые 4 стартанут быстро, а вот остальные, и плюс потоки этого пула заблокируются и не смогут выполнять другие задачи пока читают
Задачи могут перекидываться с одного на другой поток
источник

S

Stas in pro.graphon (and gamedev)
Антон Ковалев
Пул задач решает эту проблему
Вроде как предлагал его месяц назад. Сказал, что вроде не он.
источник

CU

Columbus Utrigas in pro.graphon (and gamedev)
Ну если таски зависят друг от друга, то задавай зависимости, граф задач
источник

S

Stas in pro.graphon (and gamedev)
@vertver , даже модификация с воровством задач вроде.
источник

d

disba1ancer in pro.graphon (and gamedev)
Антон Ковалев
Задачи могут перекидываться с одного на другой поток
но у нас нету больше потоков на которые можно перекинуть, только 4ре потока из пула и все застряли на синхронных операциях
источник

CU

Columbus Utrigas in pro.graphon (and gamedev)
disba1ancer
но у нас нету больше потоков на которые можно перекинуть, только 4ре потока из пула и все застряли на синхронных операциях
Ещё можешь давать задачам приоритеты выполнения, если понимаешь, что она жирная
источник

АК

Антон Ковалев... in pro.graphon (and gamedev)
disba1ancer
но у нас нету больше потоков на которые можно перекинуть, только 4ре потока из пула и все застряли на синхронных операциях
Значит ты никак по другому не сделаешь. В Винде на уровне ядра тот же пул стоит
источник

d

disba1ancer in pro.graphon (and gamedev)
Антон Ковалев
Значит ты никак по другому не сделаешь. В Винде на уровне ядра тот же пул стоит
почему не сделаю, если заменю синхронные операции на асинхронные всё будет ок
источник

АК

Антон Ковалев... in pro.graphon (and gamedev)
disba1ancer
почему не сделаю, если заменю синхронные операции на асинхронные всё будет ок
Асинхронные задачи, которые затем попадут в пул в Винде и также зависнут там
источник

АК

Антон Ковалев... in pro.graphon (and gamedev)
Делай пул в кол-во потоков равное потокам процессора и все
источник

d

disba1ancer in pro.graphon (and gamedev)
Антон Ковалев
Делай пул в кол-во потоков равное потокам процессора и все
это мне и так было понятно, фишка в том что в этом случае лучше избежать блокирующих асинхронных операций
источник

d

disba1ancer in pro.graphon (and gamedev)
тфу
источник

АК

Антон Ковалев... in pro.graphon (and gamedev)
Боже, как же ты все затрудняешь сам себе же
источник