У меня есть статический класс, который содержит ряд функций, которые считывают значения из файлов конфигурации. Конфигурационные файлы снабжены программным обеспечением и самим ПО, которые НИКОГДА не записываются в них.Доступ к файлам для чтения из потоков
У меня есть ряд потоков, работающих в моем приложении, и мне нужно вызвать функцию в статическом классе. Затем функция перейдет в один из файлов конфигурации, найдите значение (в зависимости от параметра, который я передаю при вызове функции), а затем верну результат.
Мне нужны потоки, чтобы иметь возможность читать файл в одно и то же время (точнее, без синхронизации с основным потоком). Нити никогда не будут записываться в файлы конфигурации.
Мой вопрос просто в том, будут ли возникать проблемы, позволяющие нескольким потокам вызывать одни и те же статические функции для чтения значений из одного и того же файла одновременно? Я могу понять, что возникнут проблемы с сериализацией, если некоторые потоки записывали в файл, а другие читали, но этого никогда не произойдет.
В принципе:
1. Возникают ли проблемы, позволяющие одновременному считыванию нескольких потоков из одного и того же файла?
2. Есть ли проблемы, позволяющие нескольким потокам одновременно вызывать одни и те же статические функции (в том же статическом классе)?
Просто замечание .. Возможно, вы захотите написать класс-оболочку для конфигурации, которая сохраняет конфигурацию в памяти вместо того, чтобы снова и снова считывать конфигурацию из файла. В конце концов, это будет намного лучше, если чтение файла будет инкапсулировано внутри такого класса. –
Файл конфигурации содержит сотни строк информации. Я передаю значение в функцию, которая читает файл и возвращает информацию о конфигурации, относящуюся к переданному мне значению. Я думаю, что время от времени запоминать файл не так, как хранить содержимое в памяти, учитывая, что я не нужно всю информацию все время. – Jeedee
В целом я ценю тот факт, что вы стремитесь создать оптимизированное программное обеспечение, но вы работаете с программным обеспечением Delphi, что обычно означает, что ваш код уже более десяти лет, и он будет работать еще в течение десятилетия. Сегодня вы можете получить 24 ГБ за менее чем 80 евро, поэтому лучше подумайте дважды, прежде чем жертвовать ремонтопригодностью своего программного обеспечения, чтобы сэкономить несколько килобайт ОЗУ. –