Про многопоточность
Насколько я понимаю, если данные по сути не подразумевают параллельный доступ на изменение, то никакой многопоточности при работе с ними быть не может в принципе. Может быть лишь так называемая синхронизация доступа - через блокировки и прочее такое.
Да и просто на физическом уровне - если данные хранятся в одном экземпляре, то их даже считать можно лишь поочереди. Допустим, что память позволяет считывать данные из одних и тех же ячеек параллельно (хотя навряд ли - это ж дополнительные линии связи на физическом уровне резервировать надо, а там и так в микросхемах и на контактных площадках тесно). А позволяет ли контроллер памяти в процессоре параллельный доступ к памяти? Т.е. доступ к самому контроллеру параллельный? Допустим, что да. Но у всех ли
процессоров, на которых запускается наш код, такой параллельный доступ? Это всё неочевидно и зависит от. А в общем случае нужно считать так - становись в очередь, чтобы считать данные.
Есть ещё финт - сделать несколько копий одного данного и позволить каждому клиенту работать со своей копией. Но тут снова вопросы синхронизации этих копий всплывают.
Опять же, какова суть данных? Если это нечто, что актуально только самое новое, то можно позволить редактировать и копии, а потом просто ими замещать оригинал. Но и тут вопрос - во время замещения доступ нужно блокировать.
Все эти барьеры памяти (я сейчас про Дотнет), блокировки, семафоры - это суть абстракции синхронизации, работающие до определённого уровня. До этого уровня у нас типа всё параллельно. А ниже - последовательно, т.к. в каком-то месте какой-то ресурс всё равно недоступен параллельно. Просто тот же мемори барьер позволяет сэкономить чуть больше тактов, чем использование lock. Но если вы не гоняетесь за наносекундами, то вам пофиг, и вы пользуетесь не ручными тонким управлением синхронизацией, а высокоабстрактными инструментами "параллельного" программирования.
Можно вообще более обще и философски рассуждать. Ни одно событие в мире не происходит в одно время. Всегда что-то раньше, а что-то позже - вплоть до самого малого кванта времени, если таковой существует. А значит, даже теоретически единичный ресурс доступен только последовательно. Параллельность лишь в голове, на определённом уровне абстракции.