首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linuxsleep函数和delay函数

其实在linux的delay函数,道理是一样的,都是通过cpu执行空指令来达到延时的目的,但是对于操作系统这种多线程进行的方式来说,在需要延时的时候,可以通过将进程挂起的方式来实现延时。...这就是sleep函数。 sleep和delay的区别 最明显也最重要的区别就是,在执行delay的时候,是执行了空指令,虽说是空的,但是还是会占用硬件资源,cpu要进行运算。...而sleep是将此进程挂起,cpu还会执行其他进程,待到时间到,再恢复此进程。...两者对比可以看出,sleep执行的时候,节省系统资源,但是弊端是sleep的定时并没有那么准确,因为是通过进程切换来实现的,delay则是严格按照机器周期来计算,而且sleep不能适用于时间太短的延时,...应用场景 当我们希望执行一个脚本之后延时五秒再执行另外一个脚本,这个时候就可以用sleep。 当我们在设置一个芯片的各种引脚时序的时候,间隔较短且要求更准确,就需要delay。

3.6K10
您找到你想要的搜索结果了吗?
是的
没有找到

Linuxsleep、usleep、nanosleep、poll和select

在进行Linux C/C++编程时,可调用的sleep函数有好多个,那么究竟应当调用哪一个了?...下表列出了这几个函数间的异同点,可作为参考: 性质 精准度 线程安全 信号安全 sleep libc库函数 秒 是 不能和alarm同时使用 有些是基于alarm实现的,所以不能和alarm同时使用...也可实现实际睡眠时长不小于参数指定时长 clock_nanosleep 系统调用 纳秒 是 不确定 区别于nanosleep,可选择为相对或绝对时间,其次是可以选择使用哪个时钟 poll 系统调用 毫秒 是 是 在协程库libco可安全使用... * 1000 }; while ((-1 == nanosleep(&ts, &ts)) && (EINTR == errno)); } 3) 基于poll的秒级封装 // 可libco协程库安全使用...#endif // __cplusplus >= 201103L 上述介绍的sleep函数均不方便控制它们提前结束,如果需要这种sleep,可基于pthread_cond_timedwait实现,实现可参考

4.9K40

LinuxSleep和Wait命令的使用方式

Sleep命令 sleep 命令会暂停指定的时间。它通常用于脚本,但也适用于命令行。在下面的示例sleep 在两个 date 命令之间暂停30秒。...但也可以通过在参数添加一个字符来让它休眠不同的时间: 10s = 10 seconds 1m = 1 minute 2h = 2 hours 3d = 3 days [root@localhost ~...在下面的示例sleep 6 命令首先完成,脚本结束,但其他两个 sleep 进程将继续在后台运行几秒钟。 #!.../bin/bash sleep 15 & sleep 9 & sleep 6 & wait -n echo “First job has been completed.”...注意:等待的进程必须是“子进程”(在当前 shell 启动的进程)。 总结 两者都可以在脚本或命令行中使用。但是,wait 命令仅适用于在后台运行的进程。

2.6K40

LinuxSleep和Wait命令的使用方式

Sleep命令 sleep 命令会暂停指定的时间。它通常用于脚本,但也适用于命令行。在下面的示例sleep 在两个 date 命令之间暂停30秒。...但也可以通过在参数添加一个字符来让它休眠不同的时间: 10s = 10 seconds 1m = 1 minute 2h = 2 hours 3d = 3 days [root@localhost ~...在下面的示例sleep 6 命令首先完成,脚本结束,但其他两个 sleep 进程将继续在后台运行几秒钟。 #!.../bin/bash sleep 15 & sleep 9 & sleep 6 & wait -n echo “First job has been completed.”...注意:等待的进程必须是“子进程”(在当前 shell 启动的进程)。 总结 两者都可以在脚本或命令行中使用。但是,wait 命令仅适用于在后台运行的进程。

2.5K20

Linuxsleep、usleep、nanosleep、poll和select

在进行Linux C/C++编程时,可调用的sleep函数有好多个,那么究竟应当调用哪一个了?...下表列出了这几个函数间的异同点,可作为参考: 性质 精准度 线程安全 信号安全 sleep libc库函数 秒 是 不能和alarm同时使用 有些是基于alarm实现的,所以不能和alarm同时使用...也可实现实际睡眠时长不小于参数指定时长 clock_nanosleep 系统调用 纳秒 是 不确定 区别于nanosleep,可选择为相对或绝对时间,其次是可以选择使用哪个时钟 poll 系统调用 毫秒 是 是 在协程库libco可安全使用...1000 }; while ((-1 == nanosleep(&ts, &ts)) && (EINTR == errno)); } 3) 基于poll的秒级封装 // 可libco协程库安全使用...(std::chrono::microseconds(1000)); #endif // __cplusplus >= 201103L 上述介绍的sleep函数均不方便控制它们提前结束,如果需要这种sleep

7K20

C语言之Sleep函数

Sleep函数: 功 能: 执行挂起一段时间   用 法: unsigned sleep(unsigned seconds);   注意:   在VC中使用带上头文件#include ,在Linux下,gcc编译器,使用的头文件因gcc版本的不同而不同#include   在VC,Sleep的第一个英文字符为大写的"S" ,在linux下不要大写,在标准C...sleep, 不要大写,简单的说VC用Sleep, 别的一律使用sleep 在VCSleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000); 在Linux...下,sleep()里面的单位是秒,而不是毫秒。...语法: void usleep(int micro_seconds); 返回值: 无 注意:这个函数不能工作在 Windows 操作系统。 usleep() 与sleep()类似,用于延迟挂起进程。

7.4K80

Linux进程的Uninterruptible sleep(D)状态

Linux系统进程状态 PROCESS STATE CODES Here are the different values that the s, stat and state output specifiers...D    Uninterruptible sleep (usually IO) R    Running or runnable (on run queue) S    Interruptible sleep...Linux 进程有两种睡眠状态,一种interruptible sleep,处在这种睡眠状态的进程是可以通过给它发信号来唤醒的,比如发 HUP 信号给 nginx 的 master 进程可以让 nginx...比如你ctrl+c或者kill -9 ,能够立刻让进程响应这些信号(切换到TASK_RUNNING和再次进入就绪队列,执行注册的信号处理函数),不必要等待所需的资源满足后再响应这些信号。     ...NFS 卷不可访问导致进程进入 D状态的,那么可以通过恢复该 NFS 卷的连接来使进程的 IO 请求得到满足,除此之外,要想干掉处在 D 状态进程就只能重启整个 Linux 系统了。

10K10

JavaThread.sleep源码分析

本文将从源码角度分析Thread.sleep的实现机制。...JVM_END 由上面的代码我们可以看到,如果在调用sleep之前或在sleep过程sleep线程被interrupt了,则该sleep方法会抛出InterruptedException异常。...比如,在park方法,如果检测到_event值不等于0,则说明unpark方法被调用过,不用等待了。...如果park方法被调用过,则需要再进一步加锁检查_nParked字段,如果_nParked还是不等于0,说明该线程确实是在堵塞等待过程,调用pthread_cond_signal方法,告诉这个线程,其可以从阻塞状态退出了...有关Thread.interrupt方法是如何调用_SleepEvent的unpark方法,使Thread.sleep从sleeping状态退出的,请查看文章: JavaThread.interrupt

73530

Javasleep和wait的区别

1、sleep方法是Thread类的静态方法; wait方法是Object类的成员方法 2、sleep方法使当前线程暂停执行指定的时间,让出cpu给其他线程,但是它的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态...在调用sleep方法后,线程不会释放对象锁; 而当调用wait方法时,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池处于准备状态。...3、sleep方法有可能会抛出异常,所以需要进行异常处理; wait方法不需要处理 4、sleep方法可以在任何地方使用; wait方法只能在同步方法和同步代码块中使用 Java中线程的生命周期图谱如下所示

3.2K21

Javasleep()和wait()方法的区别

引言在Java编程sleep()和wait()都是用于线程的控制和调度的方法。然而,它们之间有着重要的区别。...本文将详细介绍Javasleep()和wait()方法的区别,帮助读者更好地理解和正确使用这两种方法。...图片2. sleep()方法sleep()方法是Thread类的静态方法,用于使线程进入睡眠状态,暂停一段时间的执行。sleep()方法接受一个以毫秒为单位的时间参数,指定线程休眠的持续时间。...需要注意的是,sleep()方法不会释放对象的锁,因此其他线程无法访问被sleep()的线程所持有的对象。...通过本文的介绍,相信读者对Javasleep()和wait()方法的区别有了更清晰的认识。合理使用这两种方法,可以更好地控制和调度线程,提高程序的效率和可靠性。

35010

你能说出多线程 sleep、yield、join 的用法及 sleep与wait区别吗?

作者:noteless cnblogs.com/noteless/p/10443446.html Object的wait、notify、notifyAll,可以用于线程间的通信,核心原理为借助于监视器的入口集与等待集逻辑...另外,你应该已经注意到sleep方法都有static修饰,既然是静态方法,在Thread的惯例就是针对于:当前线程,当前线程,当前线程 yield方法 对于sleep或者wait方法,他们都将进入特定的状态...在方法深入介绍前先看个例子 一个线程,循环5次,每次sleep 1s,主线程打印信息 从结果可以看到,主线程总是在线程执行之后,才会执行,也就是主线程在等待我们创建的这个线程结束,结束了之后才会继续进行...结论: 主线程main调用启动线程(调用start),然后调用该线程的join方法,可以达到主线程等待工作线程运行结束才执行的效果,并且join要在start调用后 如何做到的? ?...,被中断后都会抛出异常 wait是Object的方法,sleep是Thread的方法 wait必须在同步执行,sleep不需要(join底层依赖wait,但是不需要在同步,因为join方法就是synchronized

1.3K20
领券