Параллельная запись файла

Я использовал RCUNIT, чтобы сделать некоторое поблочное тестирование на встроенный код на ПК прежде, чем протестировать на цели. Хорошая абстракция аппаратного интерфейса еще важна, порядок байтов и регистры с отображенной памятью собираются уничтожить Вас.

8
задан pistacchio 21 July 2009 в 17:12
поделиться

6 ответов

Самый быстрый способ синхронизации доступа между процессами - использовать мьютексы / семафоры. В этой теме рассказывается, как их использовать для имитации шаблона блокировки чтения-записи: Существует ли глобальная именованная блокировка чтения / записи?

2
ответ дан 5 December 2019 в 22:20
поделиться

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

2
ответ дан 5 December 2019 в 22:20
поделиться

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

1
ответ дан 5 December 2019 в 22:20
поделиться

Я бы посмотрел на что-то вроде Command Pattern для этого. Одновременная запись была бы кошмаром для целостности данных.

По сути, вы используете этот шаблон для постановки ваших команд записи в очередь, чтобы они выполнялись в порядке запроса.

Вы также должны использовать ReaderWriterLock , чтобы гарантировать, что вы можете читать из файла во время записи . Это будет вторая линия защиты за шаблоном команд, чтобы только один поток мог писать в файл в данный момент времени.

1
ответ дан 5 December 2019 в 22:20
поделиться

Вы также можете попробовать заблокировать. Это просто - «блокировка гарантирует, что один поток не войдет в критическую секцию, в то время как другой поток находится в критической секции кода. Если другой поток попытается ввести заблокированный код, он будет ждать (блокировать), пока объект не будет освобожден».

http://msdn.microsoft.com/en-us/library/c5kehkcz%28VS.71%29.aspx

0
ответ дан 5 December 2019 в 22:20
поделиться

Я также рекомендовал бы вам поискать примеры наличия нескольких читателей и только одного автора в критическом разделе. Вот небольшая статья с хорошим решением http://arxiv.org/PS_cache /cs/pdf/0303/0303005v1.pdf

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

0
ответ дан 5 December 2019 в 22:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: