
---@class copas_semaphore_module*
---@type copas_semaphore_module*
local M = {}

---@class copas_semaphore_object*
local copas_semaphore_object = {}

--- 创建信号量。
---@param max? integer 最大数量。
---@param start? integer 初始数量。
---@param seconds? number 默认等待秒数。
---@return copas_semaphore_object* semaphore 信号量对象。
function M.new(max, start, seconds) end

--- 归还信号量。
---@param given? integer 数量，默认为 1。
---@return boolean|nil ok 是否成功。
---@return string? errMsg 错误信息。
function copas_semaphore_object:give(given) end

--- 获取信号量。
---@param requested? integer 数量，默认为 1。
---@param timeout? number 超时秒数。
---@return boolean|nil ok 是否成功。
---@return string? errMsg 错误信息。
function copas_semaphore_object:take(requested, timeout) end

--- 当前可用数量。
---@return integer count 数量。
function copas_semaphore_object:get_count() end

--- 当前等待数量。
---@return integer waitCount 等待数量。
function copas_semaphore_object:get_wait() end

--- 销毁信号量。
function copas_semaphore_object:destroy() end

return M
