Взаимно блокируются* функции, полезные на общей памяти?

Нет ничего плохого в использовании #include в заголовочном файле. Это очень распространенная практика, вы не хотите обременять пользователя библиотекой запоминанием того, какие другие неясные заголовки нужны.

Стандартным примером является #include <vector>. Получает вам векторный класс. И множество внутренних файлов заголовков CRT, которые необходимы для правильной компиляции векторного класса, вещи, которые вам действительно не нужны или о которых вы не хотите знать.

9
задан Adrian McCarthy 28 October 2009 в 14:44
поделиться

2 ответа

From MSDN :

...

API с блокировкой

Функции с блокировкой обеспечивают простой механизм синхронизации доступ к переменной, которая используется несколько потоков. Они также исполняют операции над переменными в атомарном манера. Нити разных процессы могут использовать эти функции, если переменная находится в разделяемой памяти.

Так что да, это безопасно с вашим подходом к разделяемой памяти.

3
ответ дан 4 December 2019 в 21:10
поделиться

Связанные функции предназначены именно для этого типа использования.

Из http://msdn.microsoft.com/en-us/library/ms684122.aspx :

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

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

7
ответ дан 4 December 2019 в 21:10
поделиться
Другие вопросы по тегам:

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