设计一条简单的等待工作队列之软件模型设计与实现(三)

  • 时间:
  • 浏览:1
  • 来源:uu快3新平台_uu快3诀窍_讨论群

sleep(header->work_queue.sec);函数进行传参了,直接返回即可,那么 就少调用sleep函数一次,提高了任务管理器运行的强度:

//延迟放进去去这里,一个工作执行完,有不可能 要等候一下,延迟还须要放进去去这里 

p->work_queue.work_sleep(p);

p->work_queue.queue_st(p);

//执行工作 

不可能 中间的队列设计得更加简化,不可能 考虑到队列会产生阻塞,休眠的结果,则到完后 须要设计一个唤醒队列的机制,就须要任务管理器运行运行间通信的知识支持了。

http://blog.csdn.net/morixinguan/article/details/77758206

在前面两篇文章中,不可能 考虑到中间须要设计简化的工作队列,全都加入了任务管理器运行机制。但不可能 设计的是一根简单的等候工作队列,却用到了任务管理器运行,其实 那么必要,任务管理器运行在这俩地方反倒是很糙浪费资源,干脆还须要不使用它,而将实现出队的操作如下,那么 也还须要实现同样的效果。

New->work_queue.sec = workArray->sec ;

New->work_queue.work_sleep = workArray->work_sleep ;

http://blog.csdn.net/morixinguan/article/details/77783311

不可能 该任务那么产生延迟,则在创建任务底部形态体初始化的完后 ,将工作者底部形态体中的sec初始化为0即可,那么 ,在入队操作的完后 ,注册工作者底部形态体:

此时将sec注册为0,则work_sleep最终调用的sleep为0,即共要不产生延迟,也还须要判断sec,不可能 注册的sec为0,则不调用work_sleep()中的: