Size: a a a

pro.graphon (and gamedev)

2020 June 04

АК

Антон Ковалев... in pro.graphon (and gamedev)
disba1ancer
ты что имеешь ввиду?
Тебе нужно загрузить файл: создаёшь задачу "загрузи файл из gamedata.db", затем эта задача берет и грузит в отдельном потоке через маппинг файла напрямую с памяти (если участок уже в ней есть, если нету то с диска), и все
источник

АК

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

d

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

d

disba1ancer in pro.graphon (and gamedev)
Антон Ковалев
Тебе нужно загрузить файл: создаёшь задачу "загрузи файл из gamedata.db", затем эта задача берет и грузит в отдельном потоке через маппинг файла напрямую с памяти (если участок уже в ней есть, если нету то с диска), и все
типа собственный кеш?
источник

CU

Columbus Utrigas in pro.graphon (and gamedev)
Антон Ковалев
Тебе нужно загрузить файл: создаёшь задачу "загрузи файл из gamedata.db", затем эта задача берет и грузит в отдельном потоке через маппинг файла напрямую с памяти (если участок уже в ней есть, если нету то с диска), и все
Кстати, насчёт db. Как в играх с применением полноценных баз данных (я про что-то вроде SQLite, на сервере понятно что базы нормальные)?
источник

АК

Антон Ковалев... in pro.graphon (and gamedev)
disba1ancer
типа собственный кеш?
Не собственный, системный
источник

АК

Антон Ковалев... in pro.graphon (and gamedev)
Columbus Utrigas
Кстати, насчёт db. Как в играх с применением полноценных баз данных (я про что-то вроде SQLite, на сервере понятно что базы нормальные)?
Так себе. Никто их напрямую так не юзает
источник

CU

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

d

disba1ancer in pro.graphon (and gamedev)
Columbus Utrigas
Если процесс убивается, закрываются и все дескрипторы, не?
я про задачу-таску
источник

d

disba1ancer in pro.graphon (and gamedev)
а не про процесс
источник

CU

Columbus Utrigas in pro.graphon (and gamedev)
Так не убивай процесс пока он читает из файла
источник

CU

Columbus Utrigas in pro.graphon (and gamedev)
Сделай запрет
источник

I

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

d

disba1ancer in pro.graphon (and gamedev)
Ioann_V
Ну да пусть слушает нужные события удаления
но пока об этом можно не думать у очереди вообще нет механизма отзыва тасок
источник

CU

Columbus Utrigas in pro.graphon (and gamedev)
Columbus Utrigas
Сделай запрет
Или сделай удаление таски тоже таской, выполнение которой гарантируется после закрытия дескриптора
источник

АК

Антон Ковалев... in pro.graphon (and gamedev)
Columbus Utrigas
Или сделай удаление таски тоже таской, выполнение которой гарантируется после закрытия дескриптора
И получим мы тредлок :)
источник

CU

Columbus Utrigas in pro.graphon (and gamedev)
Антон Ковалев
И получим мы тредлок :)
А обязательно в поток другой выносить?
источник

d

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

CU

Columbus Utrigas in pro.graphon (and gamedev)
Сделай удаление таски асинхронным
источник

S

Stas in pro.graphon (and gamedev)
Антон Ковалев
И получим мы тредлок :)
Замечательно. Добавлю в копилку локов.
источник