【寒江雪】Go実現対象プールモード
Object Pool Pattern
対象プールモードは、必要に応じて使用する対象を予測し、事前に作成し、メモリに保存するタイプです。
実現する
オブジェクトプールの定義
注意作成対象の価格がメンテナンス価格より高い場合、使用対象プールモードは素晴らしい。 需要が相対的に固定されている場合、維持対象の価格は を失う可能性がある。初期化対象は、パフォーマンスに積極的な影響を与える。
Author:寒江雪
Date:2018年03 10
対象プールモードは、必要に応じて使用する対象を予測し、事前に作成し、メモリに保存するタイプです。
実現する
オブジェクトプールの定義
package pool
import (
"fmt"
"strconv"
)
type Object struct{
}
func (Object)Do(index int){
fmt.Println("Object Do:"+strconv.Itoa(index))
}
type Pool chan *Object
func NewPool(total int)*Pool{
p := make(Pool,total)
for i := 0;inew(Object)
}
return &p
}
使用func main(){
p := pool.NewPool(5)
wait := sync.WaitGroup{}
for i:=0;i<100;i++ {
index := i
wait.Add(1)
go func(pool pool.Pool, ind int) {
select {
case Obj := default:
fmt.Println("No Object:"+strconv.Itoa(ind))
}
wait.Done()
}(*p, index)
}
wait.Wait()
}
ここではgoroutinesを使って、poolのオブジェクトを同時に読み込みます。注意
Author:寒江雪
Date:2018年03 10