2016-04-08 3 views
-1

Хойя. Я новичок в функции async от .net 4.5, используя C#. Я делаю небольшой проект, где мне требуется постоянно моделировать (изменять) несколько супер-больших данных объекта во все времена. Изменения сложны, как связанные сетки - многие внутренние данные объекта бросаются, меняются местами и вычисляются вокруг.C# безопасное сохранение async при изменении данных?

Однако я также хочу выполнить временное сохранение (сопоставление DTO + сериализация) в несколько сгруппированных файлов с помощью async, чтобы предотвратить его постоянное заикание, поскольку процесс сохранения - довольно утомительная работа.

  • Мой вопрос: безопасно ли сохранять асинхронно, пока данные изменяются все время? Если нет, какие варианты я могу сделать?

Между тем вы можете сказать мне, чтобы он клонировал объект, чтобы он стал безопасным для спасения ... но это только отходит от того, что я собираюсь сделать - объекты действительно массивные.

Редактировать: Проект делит процесс на два: Имитировать объект перед проверкой на сохранение. Таким образом, да, это справедливо только в том случае, если сохранение выполняется вне процесса моделирования. Вот почему я спросил, безопасно ли это для асинхронного использования, потому что я не понимаю его полностью.

  • Мой следующий вопрос: будет ли сохранение в процессе моделирования? Если да, то какие другие способы я могу сохранить, не мешая скорости моделирования? Или, возможно, некоторый шаблон, который нужно сделать для процесса экономии async, чтобы он не спас в процессе моделирования?
+0

Реальный вопрос заключается в том, что приемлемо, чтобы сохранить часть одного государства со стороны другого, или является ли объект действителен только при замораживании? – Carlos

+0

Проект делит процесс на два: Имитировать объект перед проверкой на сохранение. Таким образом, да, это справедливо только в том случае, если сохранение выполняется вне процесса моделирования. Вот почему я спросил, безопасно ли это для асинхронного использования, потому что я не понимаю его полностью. Будет ли сохранение происходить внутри процесса моделирования? Если да, то какие другие способы я могу сохранить, не мешая скорости моделирования? Или, возможно, некоторый шаблон, который нужно сделать для процесса экономии async, чтобы он не спас в процессе моделирования? – Kei

+0

async/await используется, чтобы освободить поток. Обычно это делается из таких приложений, как WPF, поэтому поток GUI не зависает и ASP.NET, поэтому поток может обслуживать другой входящий запрос. Это не имеет никакого отношения к параллельной обработке или многопоточности. Операция сохранения будет выполняться одинаково долго в любом случае и будет неудачной или успешной на основе тех же правил. Так что в ореховой оболочке ваша бизнес-логика не должна влиять ни на что. – Igor

ответ

0

Не знаете, почему кто-то мог бы опустить мой простой вопрос, такой удручающий ... -1 для спутника. Вот почему я иногда ненавижу сообщество StackOverflow ...

Пока я ждал, когда кто-то окажется полезным, я решил это сам, пройдя через Google, как сумасшедшая корова.

Async похож на многопоточность, хотя и не создает нити, что я действительно не понимаю, почему. В этом случае я не смогу сохранить объекты во время имитации, поскольку IO прервет симуляцию.

  • Async IO небезопасен.
  • Сохранение произойдет в процессе моделирования.

  • Решение состоит в том, чтобы останавливать и кэшировать части объектов в симуляции, когда они не используются в какой-то момент, это повысит производительность и позволит сохранить сохраненные в кэше объекты. Процесс сохранения помещается в очередь, где задача сохранения объектов будет выполняться один за другим с условиями ниже.

Async условие TASKING:

  • Если объект должны были быть возобновлен в моделирование снова перед задачей для сохранения очереди объектов были начаты, экономия будет отменена, а объекты будут реактивируется без перерывов. Вместо этого сохранение переходит к следующему объекту в очереди.
  • Если объект был реактивирован при сохранении, поток должен быть дождаться, пока задача сохранения этого конкретного объекта не будет окончательно завершена.

Ну тогда ... -_-

Смежные вопросы