Goのプールはどうやって使うの?
Go言語でPoolは、リソースの使用量を制限して過剰消費を防ぐために広く使われます。Golangではsync.Poolを使ってオブジェクトプールを作成できます。以下はsync.Poolを使用する一般的な手順です。
- 最初に、池に格納するオブジェクトの型を定義します。
type Object struct {
// 定义对象的字段
}
- 生まれながらの才能だけでは生きていけない
func NewObject() *Object {
// 创建一个新的对象
obj := &Object{
// 初始化对象字段
}
return obj
}
- ネイティブな日本語表現: 同期プール
- 新しく
pool := &sync.Pool{
New: func() interface{} {
return NewObject()
},
}
- 取得する
- ニュー
obj := pool.Get().(*Object)
- オブジェクトが所定の操作を終えたら、プールに戻して再利用されるようにします。
pool.Put(obj)
注意事項:
- オブジェクトプールにあるオブジェクトは、すぐに破棄されず、必要に応じて破棄されます。そのため、オブジェクトがプールに返却された後は、オブジェクトの状態が変更されていないと想定しないでください。
- 大規模なオブジェクトが必要な場合は、sync.Pool から利用可能なオブジェクトを取得するのではなく新しいオブジェクトを作成する場合があります。このため、より多くのオブジェクトが必要になる場合は、リソース使用量を制御するための別の手法が必要になる可能性があります。
Sync.Pool を利用する基本手順です。 具体的な使用シーンによって、コードはさらに調整・最適化が必要になる可能性があります。