Используя gen_server для инкапсуляции mnesia таблицы?

Разрешения на язык:

extern "C" {
  #include "foo.h"
}

, Что, если foo.h содержит что-то, что требует связи C++?

    void f_plain(const char *);
    extern "C++" void f_fancy(const std::string &);

Это - то, как Вы угождаете компоновщику.

8
задан Christian 17 September 2009 в 11:52
поделиться

2 ответа

Я полагаю, согласно бритве Оккама , нет необходимости в существовании этого gen_server , тем более что там абсолютно в нем не хранится состояние . Такой процесс может потребоваться в ситуациях, когда вам нужно, чтобы доступ к таблице (или любому другому ресурсу) был строго последовательным (например, вы могли бы избежать любых прерванных транзакций ценой узкое место).

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

s razor нет необходимости в существовании этого gen_server , тем более что в нем нет абсолютно состояния . Такой процесс может потребоваться в ситуациях, когда вам нужно, чтобы доступ к таблице (или любому другому ресурсу) был строго последовательным (например, вы могли бы избежать любых прерванных транзакций ценой узкое место).

Инкапсуляция доступа к таблице в модуле - хорошее решение . Он не создает дополнительной сложности , обеспечивая при этом надлежащий уровень абстракции и инкапсуляции.

s razor нет необходимости в существовании этого gen_server , тем более что в нем нет абсолютно состояния . Такой процесс может потребоваться в ситуациях, когда вам нужно, чтобы доступ к таблице (или любому другому ресурсу) был строго последовательным (например, вы могли избежать любых прерванных транзакций ценой узкое место).

Инкапсуляция доступа к таблице в модуле - хорошее решение . Он не создает дополнительной сложности , обеспечивая при этом надлежащий уровень абстракции и инкапсуляции.

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

Инкапсуляция доступа к таблице в модуле - хорошее решение . Он не создает дополнительной сложности , обеспечивая при этом надлежащий уровень абстракции и инкапсуляции.

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

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

10
ответ дан 5 December 2019 в 10:42
поделиться

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

Создание модуля API, который выполняет все конкретные операции доступа к таблицам и обновления, является хорошей идеей, поскольку функции API будут лучше передавать ваши намерения в код, который их вызывает. Это будет более читабельно, чем вводить операции мнезии непосредственно в вызывающий код.

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

6
ответ дан 5 December 2019 в 10:42
поделиться
Другие вопросы по тегам:

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