Есть ли установленный механизм ожидания вставки в таблицу ETS, если я хочу использовать его для общего состояния?События таблицы Erlang ETS
Я знаю, что mnesia поддерживает таблицы событий, я думал, что подобный механизм будет полезен для простой ETS, чтобы процесс мог дождаться, пока не будут загружены необходимые ему данные. Я думаю, что единственный способ сделать это - вращать цикл и непрерывно запрашивать данный ключ до тех пор, пока он не появится, но это кажется очень неэффективным. Я предпочел бы получить обратный вызов. Если я вставлю процесс между моим и ETS, я просто подтолкнул проблему к линии.
Я бы хотел, чтобы с ETS был более быстрый способ, но неудачно зарегистрировать другой слой косвенности и сериализации. Я собираюсь отметить этот ответ правильно, хотя, поскольку его действительно единственный способ с ETS. – MattyB
Это именно то, что делает Mnesia, а также множество других вещей, из-за чего она менее эффективна. В большинстве случаев использования ETS не требуется то, что вы хотели бы иметь - уведомления на введенный ключ. Как разработчик, я предпочитаю, чтобы ETS быстрая и (невероятно) быстро, и если мне нужна дополнительная функциональность, например уведомления или нет, ее легко добавить. Еще одна вещь заключается в том, что накладные расходы должны быть минимальными, поскольку вам нужны только запросы на вставку прокси, запросы на чтение могут по-прежнему иметь функцию в вашем модуле (для согласованности API), но могут просто вызвать соответствующие функции ETS. – Amiramix