Asynchronous 带回调的调度工具
我尝试开发业余网络游戏(只是为了好玩),我正在寻找一种工具,使我能够(通过一个用例):Asynchronous 带回调的调度工具,asynchronous,scheduling,Asynchronous,Scheduling,我尝试开发业余网络游戏(只是为了好玩),我正在寻找一种工具,使我能够(通过一个用例): 在系统中对项目排队,并在属性处使用finish_。通常,它将用于单元生产队列 能够更改项目的finish_at属性。呃,如果寒蝉袭击营房,它的生产就会暂时停止, 能够在进度上设置回调(以给定的百分比)。当一个玩家创造一个奇迹时,我想通知他的贵族们进展情况 你知道这样的工具吗?如果你不知道,你可以向我推荐什么技术来构建它 非常感谢 我选择双链接列表,其中每个节点可以同时是多个不同列表的成员: struct
- 在系统中对项目排队,并在属性处使用finish_。通常,它将用于单元生产队列李>
- 能够更改项目的finish_at属性。呃,如果寒蝉袭击营房,它的生产就会暂时停止,李>
- 能够在进度上设置回调(以给定的百分比)。当一个玩家创造一个奇迹时,我想通知他的贵族们进展情况李>
非常感谢 我选择双链接列表,其中每个节点可以同时是多个不同列表的成员:
struct node
{
struct node *factory_prev;
struct node *factory_next;
struct node *finish_prev;
struct node *finish_next;
struct node *progress_prev;
struct node *progress_next;
};
第一个列表链接了该工厂生产的所有产品;列表库与factory对象一起使用。当工厂受到攻击时,您可以遍历此列表以查找所有现在延迟的项目,这样您就可以将它们从其他列表中删除
第二个列表链接正在生产的所有项目,按完成时间排序。查看第一个元素可以在O(1)中告诉您一个项目是否完成
第三个列表链接广播进度事件的所有项目,同样按下一个此类事件发生的时间排序。此机制与“完成”列表非常相似,理论上可以合并,但是使用单独的、较短的列表可以更快地找到需要进度广播的项目
由于这些是双链接列表,只要您有一个指向节点的指针,您就知道如何将其与所有其他列表解除链接。请注意,在多线程程序中,您可能仍然需要某种形式的锁定
另一种选择是重新安排在通常生产时被延迟的项目;但是,对于同时包含进度报告的项目,这是非常困难的。谢谢Simon。无论如何,我不认为我能够编写这样一个守护进程(我不是C大师,我写不出来的东西可能永远无法很好地扩展)。我相信有工具可以满足这种需求(或接近的需求)。也许我应该把我的工作建立在像命令“at”这样的工具上,我不知道…