欢迎来到【者源码】【简历模板下载源码】【古龙源码编译教程】msleep源码-皮皮网网站!!!

皮皮网

【者源码】【简历模板下载源码】【古龙源码编译教程】msleep源码-皮皮网 扫描左侧二维码访问本站手机端

【者源码】【简历模板下载源码】【古龙源码编译教程】msleep源码

2024-11-30 01:13:56 来源:{typename type="name"/} 分类:{typename type="name"/}

1.linux中如何实现sleep(0)的功能
2.lua报错 怎么解决 谢大神

msleep源码

linux中如何实现sleep(0)的功能

       å‰æ®µæ—¶é—´ä»Žwindows移植了一个程序到linux上,不知为何性能奇差。查了下原因,发现是由于一个函数ZeroSleep特别耗时,这个函数的代码很简单,如下:

       void ZeroSleep()

       {

        Sleep(0);

       }

       Sleep(0)作用是用来释放cpu的时间片,避免忙等待。于是想当然的在linux上实现为:

       void ZeroSleep()

       {

        msleep(0);

       }

       ä½†å…¶å®žmsleep API的源代码如下:

       void msleep(unsigned int msecs)

       {

        unsigned long timeout = msecs_to_jiffies(msecs) + 1;

        while (timeout)

        timeout = schedule_timeout_uninterruptible(timeout);

       }

       å¦‚此一来,即使参数为0,也至少要睡眠一个jiffies单位的时间,因此导致严重的性能问题。

       è¯¥é—®é¢˜çš„解决方法是:

       æ—¢ç„¶ZeroSleep的目的是释放cpu资源,那么就可以通过调用schedule()函数替换msleep 。而且实际上msleep本身也是通过调用schedule_timeout_uninterruptible实现的,所以这个做法也是合理的。

       /blog/static//

lua报错 怎么解决 谢大神

       错误提示已经写的源码者源码很明白了 你的init这个函数没有实现

function init(xxx)

         xxxx

       end

       补上你缺的这个函数 然后实现对应的功能

       或者 require你所需要的lua文件