Pull to refresh
24
0
HrOokami @faserg1

Программист C++

Send message

Благодарю за статью. Как по мне — самая лучшая вводная по корутинам. Поправь только в тексте про await_ready(), указывается дважды false как возвращаемый результат.

Теперь вот вопрос по Task. А не надо ли его сохранять? Там хэндл корутины же лежит. А что будет, если он будет уничтожен, а мы вызовем resume? А то кажется, что doSomething работает только потому, что память незакораптилась.

Вообще, это зависит уже от системы. Где-то проще, где-то сложнее. Бывает, что можно действительно особо не запариваться, но порой такая халатность (особенно в системах посложнее) и может привести к ошибке.
Просто задача Undo/Redo — как можно быстрее исправить косяк пользователя, пока тот редактирует не сохранённый документ (хотя тот может пару раз сохранятся во время редактирования). Если история Undo/Redo будет именно сохранятся на диск/в БД, но в основном будет использоваться оперативная память, тогда ещё ладно. Тем не менее, хранить все косяки пользователя возможно тоже не имеет смысла. Допустим, достаточно истории в 100 действий (или можно в настройках приложения указать максимум хранимой истории). Так что не вижу смысла делать Undo/Redo с сохранением истории в БД/на диск, если для это есть… та же самая система контроля версий.
Это было написано, но в более общем плане. Тем не менее, я добавлю это в статью.
Верно. Но про реализацию Undo/Redo между клиентами и серверами в этой статье речь не шла.
Просто добавил информацию об этом на более видное место.
Такой вариант — слишком долго и много для Undo/Redo. Я уже говорил — это больше бэкапы, а не Undo/Redo.
Об этом в статье и написано, т.е. эти два паттерна были упомянуты. Но тут более конкретная задача — Undo/Redo.
То, что op-or — более гибок, верно. Vl-or более простой вариант, ибо для op-or нужно прописывать реализацию для каждой команды.
Не настолько зависимые. Одно дело — перерисовка документа. Другое дело — пересчёт всей таблицы (да хоть Excel) после изменения ячейки. Грубо говоря, при смене одной ячейки идёт пересчёт зависимых от неё, и только они сохраняются.
Перерисовка к Undo/Redo вообще никакого отношения иметь не должна.
В Value-oriented может и не быть пересчётов вовсе, если сохранять все значения, даже зависимые. Но я одного не понимаю, при чём тут автоматизированный op-or?
Здесь я имел в виду, что сохранять всё и вся без такой необходимости — плохой вариант.
Понял, о чём ты. Ну, я могу ответить так: Vulkan явно не для того, чтобы запускать 11 приложений параллельно (или типа того). Для этого есть тот же самый DX или OGL. Vulkan же, как упоминалось ранее — «графический ассемблер», который позволяет выжимать максимум производительности для приложения.
Но если всё же приложению действительно нужно жить параллельно с другими, то не думаю, что Vulkan (по крайней мере сейчас) подойдёт для этого дела.
И всё же, задам странный вопрос: зачем запускать столько?
Точно сказать не могу, но вот интересный факт в том, что в SPIR-V шейдер можно транслировать из кода написанного на OpenCL. Так что скорее всего — ничем.
Если речь идёт о приложениях, которые всё ещё работают и кушают память — да, придётся высвечивать то самое сообщение о нехватке памяти. А как иначе? Стоп, и с каких пор драйвер выгружает память? (Я про такое не в курсе)
Vulkan может предоставить информацию о физическом устройстве.
Это типы памяти устройства (0, Device local, Cashed Host, Coherent Host) и кучи памяти (в которых указан индекс используемой памяти).
Информацию о свободной памяти мы получить не можем. Я раньше тоже задавался таким вопросом, на что получил примерно такой ответ: количество свободной памяти постоянно меняется и мы не можем предугадать, сколько будет использовано памяти потом. И, как уже было ранее сказано, всегда нужно быть готовым получить нулевой указатель, такая же фишка нужна и в обычных программах, которые динамически выделяют память (malloc, new).
Главное — это правильно управлять памятью, и не загружать всё подряд в память устройства. Нужно уметь распределять ресурсы между хостом (кэш) и устройством.

И последнее, если всё же действительно не хватает памяти, то есть sparse memory. Как точно работает такая память я пока ещё не в курсе.

Information

Rating
3,871-st
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Game Developer
Middle