Внутренние данные DataTable и многопоточное использование - PullRequest
2 голосов
/ 05 ноября 2010

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

Ответы [ 2 ]

5 голосов
/ 05 ноября 2010

DataTables не являются особенными: простое чтение из экземпляра DataTable является поточно-ориентированным (как сказано в документации), но если вы измените любой аспект экземпляра, вы должны убедиться, чточто вы синхронизируете доступ к нему.

Вместо того, чтобы искать что-то специфическое для многопоточных таблиц данных, вы должны прочитать о многопоточности в целом.Для этого вы не ошибетесь с темой Джозефа Албахари в C # .

(Сказав это, посмотрите на эту ветку обсуждения по связанной теме.)

4 голосов
/ 05 ноября 2010

Я не думаю, что вы собираетесь найти много информации по этой теме. Это довольно узкая тема для книги, и DataTable s на самом деле не знают, что все это полезно в распараллеленных алгоритмах. Проблема с DataTable s состоит в том, что DataRow s женаты на них неясными способами. Например, изменение значения столбца в DataRow, который является частью первичного ключа, приведет к обновлению индекса родительского DataTable. Это значительно затрудняет получение значимой параллельной пропускной способности, поскольку при внесении любых изменений вам в значительной степени приходится блокировать доступ к всему . Тем не менее, DataTable и DataRow безопасны для нескольких читателей (пока нет писателей), поэтому не все потеряно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...