多任务操作系统中的延时操作应该注意的事项

4 篇文章 0 订阅
2 篇文章 0 订阅

           Linux等多任务操作系统中使用延时函数要特别注意以下几点:

         (1)应用层和内核层的延时函数是不能混用的。因为,内核层的延时函数在调用过程中是不会发生任务切换的延时是精确的,而应用层的延时函数在延时函数调用是会发生任务切换,延时是不精确的。

         (2)模拟时序的操作必须要在内核层完成,即函数执行的过程中不能够发生任务切换,因为切换会导致延时不精确。

         (3)在应用层的一个任务中多次频繁的调用延时函数会导致延时精度偏差非常的大。

 

          那么,如果我们想在应用层中实现模拟时序和一个任务中多次调用延时函数这类操作应该怎么办?

          (1)根据CPU的频率来计算一次加减法运算的时间来替代标准C语言提供的延时函数。

          (2)将任务的优先级提高到不能被中断的级别。

 

          下面贴出一段,我们使用PPC405EP在应用层做延时的函数:

         

/*f=25MHz 1us---n=2*/
/*PPC405EP 1us---n=10*/
void delayus(unsigned char n)
{
      n = n*10;
      while(--n)
        ;
}

/*f=25MHz 1ms---n=1*/
/*PPC405EP 1ms---n=1*/
void delayms(unsigned char n)
{
    unsigned char i=0x64;
    while(--n)
    {
        while(--i)
            delayus(0x64);
    }
}

我们团队有着十几年的期货程序化交易算法与软件研发经验,基于C++ Qt技术研发了具有自主知识产权的期货智能程序化交易一体化系统平台,该平台封装了二百多个量化指标,具有低时延、高性能、小滑点、可定制和跨平台的特点。团队致力于将人工智能技术与传统的程序化交易技术相结合为客户提供灵活可定制的期货智能程序化交易服务和产品。

       

       有问题,欢迎邮件讨论:qinpanke@gmail.com

       2013年7月8日与北京邮电大学新科研楼302。

 

         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值