У меня есть простая функция, которую я использую для кэширования значений. Я использую таблицу ha sh в качестве кэша. Кэш будет доступен из разных потоков, и я хочу использовать atomi c box для управления доступом из разных потоков. Пока что у меня есть этот код
; Define the local hash table we will use.
(define cache (make-atomic-box (make-hash-table)))
(define-public (make-cache ITEM fv)
(let ((val (hash-ref (atomic-box-ref cache) ITEM)))
(if val
val
(begin
(hash-set! cache ITEM fv) ;;this where I want to use atomic box update functions
fv
))
)
)
Теперь мне не ясно, как обернуть одну из функций обновления окна Atomi c (atomic-box-set!
, atomic-box-swap!
или atomic-box-compare-and-swap!
) вокруг функция hash-set
для добавления новых значений в таблицу ha sh.
Итак, как я могу использовать Atom c ящики для обновления таблиц ha sh?