当前位置: 首页>>代码示例>>Golang>>正文


Golang IEvent.GetNextTimer方法代码示例

本文整理汇总了Golang中github.com/toophy/Gogame/event.IEvent.GetNextTimer方法的典型用法代码示例。如果您正苦于以下问题:Golang IEvent.GetNextTimer方法的具体用法?Golang IEvent.GetNextTimer怎么用?Golang IEvent.GetNextTimer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在github.com/toophy/Gogame/event.IEvent的用法示例。


在下文中一共展示了IEvent.GetNextTimer方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: PostMsg

// 投递线程间消息
func (this *ThreadMsgPool) PostMsg(tid int32, a event.IEvent) bool {
	if !a.IsHeader() || a.IsEmpty() {
		return false
	}
	if tid >= jiekou.Tid_master && tid < jiekou.Tid_last {
		this.lock[tid].Lock()
		defer this.lock[tid].Unlock()

		header := this.header[tid]

		a_pre := a.GetPreTimer()
		a_next := a.GetNextTimer()

		a.SetPreTimer(a)
		a.SetNextTimer(a)

		header.GetPreTimer().SetNextTimer(a_pre)
		a_pre.SetPreTimer(header.GetPreTimer())

		header.SetPreTimer(a_next)
		a_next.SetNextTimer(header)

		return true
	}
	return false
}
开发者ID:toophy,项目名称:Gogame,代码行数:27,代码来源:thread_msg.go

示例2: PopTimer

// 从线程事件中弹出指定事件, 只能操作本线程事件
func (this *Thread) PopTimer(e event.IEvent) {
	if !e.IsHeader() {
		e.GetPreTimer().SetNextTimer(e.GetNextTimer())
		e.GetNextTimer().SetPreTimer(e.GetPreTimer())
		e.SetNextTimer(nil)
		e.SetPreTimer(nil)
	}
}
开发者ID:toophy,项目名称:Gogame,代码行数:9,代码来源:base.go

示例3: runExec

// 运行一条定时器事件链表, 每次都执行第一个事件, 直到链表为空
func (this *Thread) runExec(header event.IEvent) {
	for {
		// 每次得到链表第一个事件(非)
		evt := header.GetNextTimer()
		if evt.IsHeader() {
			break
		}

		// 执行事件, 返回true, 删除这个事件, 返回false表示用户自己处理
		if evt.Exec(this.self) {
			this.RemoveEvent(evt)
		} else if header.GetNextTimer() == evt {
			// 防止使用者没有删除使用过的事件, 造成死循环, 该事件, 用户要么重新投递到其他链表, 要么删除
			this.RemoveEvent(evt)
		}
	}
}
开发者ID:toophy,项目名称:Gogame,代码行数:18,代码来源:base.go


注:本文中的github.com/toophy/Gogame/event.IEvent.GetNextTimer方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。