linux线程 sleep?shell脚本sleep

linux待机时间设置linux待机

linux休眠命令?

很高兴本问题!此观点仅供参考!如有纰漏请尽情斧正!

systemctlreboot重启机器。

systemctlpoweroff关机。

systemctlsuspend挂起-睡眠-保存在_存。

systemctlhibernate休眠-断电-保存在硬盘。

systemctlhybrid-sleep混合休眠模式(同时休眠到硬盘并挂起)

sleep命令使用教程?

使用权限:所有使用者

使用方式:sleepnumber

说明:sleep可以用来将目前动作延迟一段时间

参数说明:

--help:显示辅助讯息

--version:显示版本编号

number:时间长度,后面可接s、m、h或d

其中s为秒,m为分钟,h为小时,d为日数

例子:

显示目前时间后延迟1分钟,之后再次显示时间:

date;sleep1m;date

这个命令更多应用于shell脚本编程里和程序里

如下面的一段程序:

应用程序:

#includesyswait.h>

usleep(n)//n微秒

Sleep(n)//n毫秒

sleep(n)//n秒

驱动程序:

#includelinux/delay.h>

mdelay(n)//milliseconds其实现

#ifdefnotdef

#definemdelay(n)(

{unsignedlongmsec=(n);while(msec--)udelay(1000);})

#else

#definemdelay(n)(

(__builtin_constant_p(n)(n)=MAX_UDELAY_MS)?udelay((n)*1000):

({unsignedlongmsec=(n);while(msec--)udelay(1000);}))

#endif

调用asm/delay.h的udelay,udelay应该是纳秒级的延时

Dos:

sleep(1);//停留1秒

delay(100);//停留100毫秒

Windows:

Sleep(100);//停留100毫秒

Linux:

sleep(1);//停留1秒

usleep(1000);//停留1毫秒

每一个平台不太一样,最好自己定义一套跨平台的宏进行控制

秒还是微秒?关于延时函数sleep()

因为要写一段代码,需要用到sleep()函数,在我印象中,sleep(10)好像是休眠10微秒,结果却是休眠了10秒(在Linux下)。觉得很奇怪,因为头儿也记得好像是微秒为单位的。所以就查了一下。

原来linux下的sleep函数原型为:

unsignedintsleep(unsignedintseconds);

而MFC中的Sleep函数原型为:

voidSleep(DWORDdwMilliseconds);

也就是说,Linux下(使用的gcc的库),sleep()函数是以秒为单位的,sleep(1);就是休眠1秒。而MFC下的sleep()函数是以微秒为单位的,sleep(1000);才是休眠1秒。原来如此啊。而如果在Linux下也用微妙为单位休眠,可以使用线程休眠函数:voidusleep(unsignedlongusec);当然,使用的时候别忘记#includesystem.h>哦。

另外值得一提的是,linux下还有个delay()函数,原型为externvoiddelay(unsignedintmsec);它可以延时msec*4毫秒,也就是如果想延时一秒钟的话,可以这么用delay(250)。

我的笔记本电脑插着电源,待机一晚上,对电脑有害处吗?

只要插着电源,就不会用笔记本电池的电,所以对电池不会造成任何损害。

待机一晚上对于电脑内部的结构也没啥损伤,可能第二天会有点卡,那是因为windows的问题,重启一下就好了。

不过如果长时间不关机,比如一个月不关机不休眠,只是关了屏幕待机,那会对电脑内部程序的处理速度带来很大影响。

不过对硬件也是没有损害的,重启一下就行了。

如果是linux操作系统就更没有问题了。

linux系统c语言进程不想被sleep阻塞等待怎么解决

1、启动后台子任务,在执行命令后加&操作符,表示将命令放在子shell中异步执行。可以达到多线程效果。如下,sleep10#等待10秒,再继续下一操作sleep10&#当前shell不等待,后台子shell等待。

2、wait命令wait是用来阻塞当前进程的执行,直至指定的子进程执行结束后,才继续执行。使用wait可以在bash脚本“多进程”执行模式下,起到一些特殊控制的作用。

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实现的,所以这个做法也是合理的。

阅读剩余
THE END