定時觸發器

2021-06-10 19:08:46 字數 2452 閱讀 6027

--[[

file name : 技能模組第一版

author : clark/陳澤丹

created : 2012-11-07

purpose :

--]]

module("程式", package.seeall)

pack_gameapi = require"系統介面"

--時間觸發器管理者

function new_timer_manager()

local uid_manager = pack_gameapi.new_index_manager()

local timer_tgr_res = {}

local public = {}

--建立時間觸發器

function public.new_timer_tgr( _time, _callback )

local uid = uid_manager.create_index()

local t =

timer_tgr_res[ uid ] = t

return uid

end--刪除時間觸發器

function public.delete_timer_tgr( _uid )

timer_tgr_res[ _uid ] = nil

uid_manager.delete_index( _uid )

endlocal sta_time = os.time()

--模糊觸發

function public.on_vague_time()

local time_unit = 1

local cur_time = os.time()

local dt = cur_time - sta_time

if dt > time_unit then

sta_time = cur_time

local t = pack_gameapi.get_t_set_by_v(timer_tgr_res)

local len = table.getn( t )

for i=1, len do

--模糊觸發

t[i].left_time = t[i].left_time - dt

if t[i].left_time <= 0 then

t[i].left_time = t[i].need_time

t[i].callback( t[i].tgr_uid )

endend

endend

--精確觸發

function public.on_exact_time()

local time_unit = 1

local cur_time = os.time()

local dt = cur_time - sta_time

if dt > time_unit then

sta_time = cur_time

local t = pack_gameapi.get_t_set_by_v(timer_tgr_res)

local len = table.getn( t )

for i=1, len do

--精確觸發

t[i].left_time = t[i].left_time - 1

if t[i].left_time <= 0 then

t[i].left_time = t[i].need_time

t[i].callback( t[i].tgr_uid )

endend

endend

return public

endg_timer_manager = new_timer_manager()

function test( _dt, _is_del )

local function do_test( _tgr_id )

print( "時間觸發器在" .. _dt .. "秒後觸發" )

if _is_del then

g_timer_manager.delete_timer_tgr( _tgr_id )

endend

return do_test

endfunction main()

--初始化模組

local tm_tgr_uid = g_timer_manager.new_timer_tgr(4, test(4, false))

local tm_tgr_uid = g_timer_manager.new_timer_tgr(1, test(1, false))

local tm_tgr_uid = g_timer_manager.new_timer_tgr(2, test(2, true))

while true do

g_timer_manager.on_exact_time()

endendmain()

觸發器 mysql觸發器

觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...

觸發器(五 復合觸發器)

oracle11g開始提供了一種復合觸發器,簡單的說就是支援把語句級和行級觸發器組合在一起。實際應用場景不多,這裡就做個記錄。與單個觸發器語法有所區別 1.單個觸發器的頭部是 before after 動作 on 物件 for 觸發級別 而組合觸發器的頭部是 for 動作 on 物件 compoun...

mysql觸發器when MySQL觸發器

set quoted identifier on goset ansi nulls on goalter trigger trg risks on dbo.projectrisk for insert,update asbegin update projectrisk set classificat...