pool.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package pool
  2. import (
  3. "sync"
  4. )
  5. const PoolSize = 64 * 1024
  6. const PoolSizeSmall = 100
  7. const PoolSizeUdp = 1472
  8. const PoolSizeCopy = 32 * 1024
  9. var BufPool = sync.Pool{
  10. New: func() interface{} {
  11. return make([]byte, PoolSize)
  12. },
  13. }
  14. var BufPoolUdp = sync.Pool{
  15. New: func() interface{} {
  16. return make([]byte, PoolSizeUdp)
  17. },
  18. }
  19. var BufPoolMax = sync.Pool{
  20. New: func() interface{} {
  21. return make([]byte, PoolSize)
  22. },
  23. }
  24. var BufPoolSmall = sync.Pool{
  25. New: func() interface{} {
  26. return make([]byte, PoolSizeSmall)
  27. },
  28. }
  29. var BufPoolCopy = sync.Pool{
  30. New: func() interface{} {
  31. return make([]byte, PoolSizeCopy)
  32. },
  33. }
  34. func PutBufPoolUdp(buf []byte) {
  35. if cap(buf) == PoolSizeUdp {
  36. BufPoolUdp.Put(buf[:PoolSizeUdp])
  37. }
  38. }
  39. func PutBufPoolCopy(buf []byte) {
  40. if cap(buf) == PoolSizeCopy {
  41. BufPoolCopy.Put(buf[:PoolSizeCopy])
  42. }
  43. }
  44. func PutBufPoolSmall(buf []byte) {
  45. if cap(buf) == PoolSizeSmall {
  46. BufPoolSmall.Put(buf[:PoolSizeSmall])
  47. }
  48. }
  49. func PutBufPoolMax(buf []byte) {
  50. if cap(buf) == PoolSize {
  51. BufPoolMax.Put(buf[:PoolSize])
  52. }
  53. }