Доброе время суток, уважаемые коллеги!
При разработке нашего проекта, возникла необходимость работать с большим объемом памяти.
Для этого — я применил Shared Memory (через вызовы API
CreateFileMapping,
MapViewOfFile и т.д.).
Это всё отлично работает при однопоточном варианте.
Однако, при многопоточном, когда переключение страниц через вызов
MapViewOfFile происходит из разных (рабочих) потоков — имеют место проблемы.
Приложение зависает, в некоторый момент при обработке информации. Выявить более подробно — ни отладчиком, ни логированием — не удаётся.
Причине проблем — мне пока не понятна.
Возможно проблемы из-за того, что действия с Shared Memory у меня защищены (для многопоточного режима) объетами типа CRITICAL_SECTION?
В то же время, так как у меня всё в одном процессе, считаю применение CRITICAL_SECTION вплне логичным.
Например здесь:
http://www.cyberforum.ru/win-api/thread404316.html
вообще не советуют работать с Shared Memory в рабочих потоках
...само проецирование на физ-память из страничного файла и прекращение проецирования в потоках лучше не далать.
не знаю, с чем это связано и есть ли тут какие-либо ограничения.
Какие здесь могут быть мысли на этот счёт?
P.S. Заранее благодарю за любые ответы!