2009-10-21 3 views
1

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

Некоторые из общих данных имеют указатели, однако эти указатели устанавливаются и используются только одним процессом, но несколькими потоками внутри процесса.

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

ответ

0

Да, безопасно обмениваться указателями (в сопоставленной памяти или нет) между потоками в одном и том же процессе, поскольку потоки имеют одинаковое адресное пространство.

1

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

Смежные вопросы