Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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
C 是否有算法来安排重叠的打开/关闭命令?_C_Asynchronous_Timer_Scheduled Tasks_Glib - Fatal编程技术网

C 是否有算法来安排重叠的打开/关闭命令?

C 是否有算法来安排重叠的打开/关闭命令?,c,asynchronous,timer,scheduled-tasks,glib,C,Asynchronous,Timer,Scheduled Tasks,Glib,我想解决的问题如下: 每个任务(绿色条)表示一对打开(绿色虚线)和关闭(红色虚线)命令。任务可能相互重叠,也可能不重叠。这是一个实时应用程序,我们不知道何时或是否会有另一项任务。目标是在阀门尚未打开时打开阀门,避免过早关闭阀门 我所说的不过早关闭阀门的意思是,例如,如果我们在off-1时间关闭阀门,那是错误的,因为阀门应该在该时间点保持开启,正确的操作是在off-4时间关闭阀门 关于实现细节,每个任务都是一个异步任务(通过.GLib async API)。我用sleep函数模拟等待任务的持续时

我想解决的问题如下:

每个任务(绿色条)表示一对打开(绿色虚线)和关闭(红色虚线)命令。任务可能相互重叠,也可能不重叠。这是一个实时应用程序,我们不知道何时或是否会有另一项任务。目标是在阀门尚未打开时打开阀门,避免过早关闭阀门

我所说的不过早关闭阀门的意思是,例如,如果我们在off-1时间关闭阀门,那是错误的,因为阀门应该在该时间点保持开启,正确的操作是在off-4时间关闭阀门

关于实现细节,每个任务都是一个异步任务(通过.GLib async API)。我用sleep函数模拟等待任务的持续时间,计时器可能更合适。现在,任务独立运行,它们之间没有协调,因此阀门过早关闭


我四处搜索,想找到一个类似的问题,但我找到的最接近的问题是目标不同的间隔调度。以前有没有人遇到过类似的问题,可以给我一些如何解决这个问题的建议?

似乎可以用一个简单的计数器来解决这个问题。每个打开命令的计数器递增,每个关闭命令的计数器递减-当计数为零时,关闭阀门。

有一个“异步”标记。如果任务是具有开始和停止时间的未来事件(而不是“立即行动”),并且事件6可能在事件5之前得到通知,我将使用链接列表,插入和/或合并一个新的时间表和列表中的项目。