目录

类

class ObjectPool<T> where T <: Object

public class ObjectPool<T> where T <: Object

功能: 此类提供了一个并发安全的对象缓存类型,该类型可以储存已经分配内存但未使用的对象。

  1. 当一个对象不需要使用时可以将对象存入 ObjectPool,当需要使用对象时再从该 ObjectPool 中取出。
  2. 储存在一个 ObjectPool 中的对象只能是同一种类型。
  3. 在一个 ObjectPool 对象的生命周期结束前,该 ObjectPool 对象中存储的对象不会被释放。

示例:

import std.objectpool.*
class City {
    var id: Int64 = 0
    var name: String = ""
}

func resetCity(c: City): City {
    let city = c
    city.id = 0
    city.name = ""
    return city
}

main() {
    let cityPool = ObjectPool({ => City()}, resetFunc: resetCity)
    let cityA = cityPool.get()
    cityA.id = 30
    cityA.name = "A"
    println("id: ${cityA.id}, name: ${cityA.name}")
    cityPool.put(cityA)
}

运行结果:

id: 30, name: A

[h2]init(() -> T, Option<(T) -> T>)

public init(newFunc: () -> T, resetFunc!: Option<(T) -> T> = None)

功能:创建新的 ObjectPool 对象。

参数:

[h2]func get()

public func get(): T

功能:尝试从 ObjectPool 中获取对象, 若从 ObjectPool 中获取对象失败,则调用 newFunc 创建新的对象并返回该对象get 的对象不使用之后应该通过 put 归还给 ObjectPool。

返回值:

[h2]func put(T)

public func put(item: T): Unit

功能:尝试将对象放入 ObjectPool 中,不保证一定会将对象放入 ObjectPool在对一个对象调用 put 后不应该再对该对象进行任何操作,否则可能导致不可期问题。

参数: