Как использовать коробки ice-9 atomi c с таблицей ha sh - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть простая функция, которую я использую для кэширования значений. Я использую таблицу 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?

...