Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asynchronous 带回调的调度工具_Asynchronous_Scheduling - Fatal编程技术网

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”这样的工具上,我不知道…