巴赫曼模塊NT255
NT255
NT255定時(shí)器接口封裝
作為定時(shí)器,需要封裝以下4類接口給用戶使用:
其中執(zhí)行到期任務(wù)有兩種工作方式:
接下來(lái)將介紹分別用跳表、紅黑樹(shù)、時(shí)間輪來(lái)實(shí)現(xiàn)定時(shí)器。
跳表是一種動(dòng)態(tài)的數(shù)據(jù)結(jié)構(gòu),采用空間換時(shí)間的思想,在有序鏈表基礎(chǔ)上加入多級(jí)索引,通過(guò)索引進(jìn)行二分快速查找,支持快速刪除、插入和查找操作(平均時(shí)間復(fù)雜度為O(logN),最壞為O(N)),效率可與平衡樹(shù)媲美,實(shí)現(xiàn)比其簡(jiǎn)單。
下面通過(guò)一張圖來(lái)簡(jiǎn)單說(shuō)明跳表操作。跳表的層即為基本的有序鏈表,存儲(chǔ)所有的數(shù)據(jù),可理解為數(shù)據(jù)層;往上則為索引層,理想狀態(tài)下,上一層為下一層節(jié)點(diǎn)數(shù)的一半。比如,要查找下圖的數(shù)據(jù)為11的節(jié)點(diǎn),從begin''出發(fā),向右走,如果下一個(gè)節(jié)點(diǎn)大于11則往下走,直到找到目標(biāo)節(jié)點(diǎn)??梢?jiàn),跳表要比原始鏈表少比較一些節(jié)點(diǎn),但前提是需要花更多空間存儲(chǔ)索引節(jié)點(diǎn)。