feature_pool.go 658 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package jsoniter
  2. func (cfg *frozenConfig) borrowStream() *Stream {
  3. select {
  4. case stream := <-cfg.streamPool:
  5. stream.Reset(nil)
  6. return stream
  7. default:
  8. return NewStream(cfg, nil, 512)
  9. }
  10. }
  11. func (cfg *frozenConfig) returnStream(stream *Stream) {
  12. select {
  13. case cfg.streamPool <- stream:
  14. return
  15. default:
  16. return
  17. }
  18. }
  19. func (cfg *frozenConfig) borrowIterator(data []byte) *Iterator {
  20. select {
  21. case iter := <- cfg.iteratorPool:
  22. iter.ResetBytes(data)
  23. return iter
  24. default:
  25. return ParseBytes(cfg, data)
  26. }
  27. }
  28. func (cfg *frozenConfig) returnIterator(iter *Iterator) {
  29. select {
  30. case cfg.iteratorPool <- iter:
  31. return
  32. default:
  33. return
  34. }
  35. }