bpool

Buffer/Byte pool for Go

  • Owner: oxtoacart/bpool
  • Platform:
  • License:: Apache License 2.0
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

bpool GoDoc

Package bpool implements leaky pools of byte arrays and Buffers as bounded channels.
It is based on the leaky buffer example from the Effective Go documentation: http://golang.org/doc/effective_go.html#leaky_buffer

bpool provides the following pool types:

  • bpool.BufferPool
    which provides a fixed-size pool of
    bytes.Buffers.
  • bpool.BytePool which
    provides a fixed-size pool of []byte slices with a pre-set width (length).
  • bpool.SizedBufferPool,
    which is an alternative to bpool.BufferPool that pre-sizes the capacity of
    buffers issued from the pool and discards buffers that have grown too large
    upon return.

A common use case for this package is to use buffers to execute HTML templates
against (via ExecuteTemplate) or encode JSON into (via json.NewEncoder). This
allows you to catch any rendering or marshalling errors prior to writing to a
http.ResponseWriter, which helps to avoid writing incomplete or malformed data
to the response.

Install

go get github.com/oxtoacart/bpool

Documentation

See godoc.org or use godoc github.com/oxtoacart/bpool

Example

Here's a quick example for using bpool.BufferPool. We create a pool of the
desired size, call the Get() method to obtain a buffer for use, and call
Put(buf) to return the buffer to the pool.


var bufpool *bpool.BufferPool

func main() {

    bufpool = bpool.NewBufferPool(48)

}

func someFunction() error {

     // Get a buffer from the pool
     buf := bufpool.Get()
     ...
     ...
     ...
     // Return the buffer to the pool
     bufpool.Put(buf)

     return nil
}

License

Apache 2.0 Licensed. See the LICENSE file for details.

Main metrics

Overview
Name With Owneroxtoacart/bpool
Primary LanguageGo
Program languageGo (Language Count: 1)
Platform
License:Apache License 2.0
所有者活动
Created At2013-12-29 04:18:01
Pushed At2019-05-30 20:26:42
Last Commit At2019-05-30 12:17:43
Release Count0
用户参与
Stargazers Count474
Watchers Count12
Fork Count52
Commits Count18
Has Issues Enabled
Issues Count3
Issue Open Count3
Pull Requests Count3
Pull Requests Open Count1
Pull Requests Close Count1
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private