kernel_dict.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. // package kernel_dict -- потокобезопасный автономный словарь
  2. package kernel_dict
  3. import (
  4. "sync"
  5. . "wartank/kernel/kernel_types"
  6. )
  7. // ЯдроСловаря -- потокобезопасный автономный словарь
  8. type ЯдроСловарь struct {
  9. dictVal map[string]interface{} // Словарь различных значений
  10. block sync.RWMutex
  11. }
  12. // НовЯдроСловарь -- возвращает новый потокобезопасный автономный словарь
  13. func НовЯдроСловарь() *ЯдроСловарь {
  14. sf := &ЯдроСловарь{
  15. dictVal: map[string]interface{}{},
  16. }
  17. _ = ИЯдроСловарь(sf)
  18. return sf
  19. }
  20. // Получ -- возвращает хранимое значение
  21. func (sf *ЯдроСловарь) Получ(key string) interface{} {
  22. sf.block.RLock()
  23. defer sf.block.RUnlock()
  24. return sf.dictVal[key]
  25. }
  26. // Уст -- устанавливает значение в контекст
  27. func (sf *ЯдроСловарь) Уст(key string, val interface{}) {
  28. sf.block.Lock()
  29. defer sf.block.Unlock()
  30. sf.dictVal[key] = val
  31. }