sleep函数(在c语言中,sleep()怎么用)

:暂无数据 2026-09-13 21:20:02 :0

sleep函数(在c语言中,sleep()怎么用)

大家好,sleep函数相信很多的网友都不是很明白,包括在c语言中,sleep()怎么用也是一样,不过没有关系,接下来就来为大家分享关于sleep函数和在c语言中,sleep()怎么用的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

本文目录

在c语言中,sleep()怎么用

sleep()用于代码的阻断延迟运行,其用法步骤如下:

需要准备的材料分别有:电脑、C语言编译器。

1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。

2、在test.cpp文件中,输入C语言代码:Sleep(1000);printf(“sleep end.“);。

3、编译器运行test.cpp文件,此时成功执行Sleep()函数在1秒后打打印内容。

c语言Sleep()函数

Sleep(1) 是休息 1毫秒。不是非常精确的,只是说分辨率是 1毫秒。
你的循环语句的执行,输出语句的执行,也要花时间,同一时间,你的计算机系统还有很多进程也在运行,它们共享同一电脑的资源。 所以 你的程序 输出不了那么多数。

c语言sleep用法

C语言标准库中没有sleep这个函数,它实际上是一个系统API函数。

函数功能: 执行挂起一段时间

1、在VC中使用带上头文件,而且全称为Sleep(),第一个字母需要大写。

  #include 《windows.h》 //需要添加头文件
   Sleep(unisgned long); //函数声明

  Windows中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该写成:

     Sleep(1000);

2、在gcc中,使用的头文件因gcc版本的不同而不同,一般来说,linux系统需要添加的头文件为:

  #include 《unistd.h》

应该是Sleep(1000);

  在Linux下,sleep()里面的单位是秒,而不是毫秒。

sleep函数的具体用法

  Sleep函数
  功 能: 执行挂起一段时间
  用 法: void Sleep(DWORD dwMilliseconds);
  在VC中使用带上头文件
  #include 《windows.h》
  ( Sleep函数存放头文件:WinBase.h)
  在gcc编译器中,使用的头文件因gcc版本的不同而不同
  #include 《unistd.h》
  Sleep()单位为毫秒,sleep()单位为秒(如果需要更精确可以用usleep单位为微秒)
  返回值:若进程/线程挂起到参数所指定的时间则返回0,若有信号中断则返回剩余秒数。
  注意:
  在VC中Sleep中的第一个英文字符为大写的“S“
  在标准C中是sleep, 不要大写.. 下面使用大写的来说明,, 具体用什么看你用什么编译器. 简单的说VC用Sleep, 别的一律使用sleep.
  Sleep函数的一般形式:
  Sleep(unsigned long);
  其中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000);
  在Linux下,sleep中的“s”不大写
  sleep()单位为秒,usleep()里面的单位是微秒。在内核中,sleep的实现是由pause函数和alarm函数两个实现的。
  特别注意在Codeblocks环境下是无法使用sleep函数的,因为在windows上Codeblocks采用mingw(Gnu在Window环境下的编译器,可以充分使用WindowsApi)作为编译器,而在stdlib.h中sleep的说明如下:_CRTIMP void __cdecl __MINGW_NOTHROW _sleep (unsigned long) __MINGW_ATTRIB_DEPRECATED;可以认为mingw舍弃了sleep函数,建议用Sleep实现sleep。
  程序示例:

  #include 《windows.h》
  #include《stdio.h》
  int main()
  {
  int a;
  a=1000;
  printf(“你“);
  Sleep(a);/* VC 使用Sleep*/
  printf(“好“); /*输出“你”和“好”之间会间隔一千毫秒,即间隔一秒,sleep()的单位为毫秒*/
  return 0;
  }

sleep函数

在VC中使用带上头文件
#include 《windows.h》
注意:
在VC中Sleep中的第一个英文字符为大写的“S“
在标准C中是sleep, 不要大写.. 下面使用大写的来说明,, 具体用什么看你用什么编译器. 简单的说VC用Sleep, 别的一律使用sleep.
Sleep函数的一般形式:
Sleep(unisgned long);
其中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000);
例:
#include 《windows.h》
int main()
{
int a;
a=1000;
Sleep(a);/* VC 使用Sleep*/
return 0;
}

usleep功能:
暂停执行。 语法: void usleep(int micro_seconds); 返回值: 无 函数种类: PHP 系统功能 内容说明:本函数可暂时使程序停止执行。参数 micro_seconds 为要暂停的毫秒数(微妙还是毫秒?)。 注意:这个函数不能工作在 Windows 操作系统中。参见:usleep() 与sleep()类似,用于延迟挂起进程。进程被挂起放到reday queue。
只是一般情况下,延迟时间数量级是秒的时候,尽可能使用sleep()函数。
且,此函数已被废除,可使用nanosleep。
如果延迟时间为几十毫秒,或者更小,尽可能使用usleep()函数。这样才能最佳的利用CPU时间

delay:
函数名: delay
功 能: 将程序的执行暂停一段时间(毫秒)
用 法: void delay(unsigned milliseconds);
程序例:
/* Emits a 440-Hz tone for 500 milliseconds */
#include《dos.h》
int main(void)
{
sound(440);
delay(500);
nosound();
return 0;
}
(由于delay读音像地雷,在各大OI灌水区通用……)

delay()是循环等待,该进程还在运行,占用处理器。
sleep()不同,它会被挂起,把处理器让给其他的进程。

sleep()参数指定暂停时间,单位是s
delay()参数指定暂停时间,单位是ms

Sleep函数的注意

在VC中Sleep中的第一个英文字符为大写的S
在标准C中是sleep, 不要大写.. 下面使用大写的来说明,, 具体用什么看你用什么编译器. 简单的说VC用Sleep, 别的一律使用sleep.
Sleep函数的一般形式:
Sleep(unsigned long);
其中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000);
在Linux下,sleep中的“s”不大写
sleep()单位为秒,usleep()里面的单位是微秒。在内核中,sleep的实现是由pause函数和alarm函数两个实现的。
特别注意在Codeblocks环境下是无法使用sleep函数的,因为在windows上Codeblocks采用mingw(Gnu在Window环境下的编译器,可以充分使用WindowsApi)作为编译器,而在stdlib.h中sleep的说明如下:_CRTIMP void __cdecl __MINGW_NOTHROW _sleep (unsigned long) __MINGW_ATTRIB_DEPRECATED;可以认为mingw舍弃了sleep函数,建议用Sleep实现sleep。

sleep函数休眠是针对进程级别还是线程级别

sleep函数很简单,参数为秒,就是睡眠一段时间。

今天和同事争论,他说sleep的作用是让进程睡眠,我说的是让线程睡眠。谁对谁错?

如果是针对进程,那么进程中的任何一个线种在调用sleep,那么整个进程都会被挂起休眠,这不科学。因此必须是针对线程才是合理的。

别争论了,先看一下man手册吧,如图1所示。



图1

说得很清楚,让调用sleep的线程睡眠一定秒数。

写段程序验证一下吧:



图2

图2中第8行是线程test执行sleep(3),即睡眠3秒。第17行是主线程执行sleep(4),睡眠4秒,如果sleep是进程级别,那么在此情况下,程序执行的时间应该大于等于7秒才对。因为操作系统在调度的时候,要么先调度线程test,要么先调度主线程main。总有一个sleep会把整个进程阻塞,一共会阻塞两次,因此是两个阻塞的时间之和再加上陷入内核、上下文切换的时间,肯定大于等于7秒。下面是执行结果



图3

执行时间是4.003秒,也就是程序执行时间是以主线程的睡眠4秒(第18行的sleep(4))为主,这说明sleep是线程级别的。

接着问,如何才能让程序执行时间是7秒以上呢,也就是让两个线程test和主线程依次执行?

这很简单,主线程main用pthread_join,让调用线程main自己阻塞,等待线程test执行完成后再执行main就行了。改下代码,如图4所示。



图4

就是在第17行加了pthread_join函数,让main线程等待test线程,下面是运行结果。



好了,多谢大家。

以上就是我们为大家找到的有关“sleep函数(在c语言中,sleep()怎么用)”的所有内容了,希望可以帮助到你。如果对我们网站的其他内容感兴趣请持续关注本站。

sleep函数(在c语言中,sleep()怎么用)

本文编辑:admin

本文相关文章:


while语句怎么结束(c语言中while(y--)是怎么结束的)

while语句怎么结束(c语言中while(y--)是怎么结束的)

本篇文章给大家谈谈while语句怎么结束,以及c语言中while(y--)是怎么结束的对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年10月10日 15:30

double(double在c语言中的意思是什么)

double(double在c语言中的意思是什么)

大家好,今天小编来为大家解答以下的问题,关于double,double在c语言中的意思是什么这个很多人还不知道,现在让我们一起来看看吧!

2026年10月8日 12:50

C语言是什么意思?编写一个C语言程序

C语言是什么意思?编写一个C语言程序

本篇文章给大家谈谈c语言,以及C语言是什么意思对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月20日 11:30

basic语言教程(我想学basic语言,请问怎么入门,股票指标就是用这个需要编辑的)

basic语言教程(我想学basic语言,请问怎么入门,股票指标就是用这个需要编辑的)

各位老铁们好,相信很多人对basic语言教程都不是特别的了解,因此呢,今天就来为大家分享下关于basic语言教程以及我想学basic语言,请问怎么入门,股票指标就是用这个需要编辑的的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来

2026年8月21日 09:40

c语言什么意思?C语言putchar()

c语言什么意思?C语言putchar()

大家好,关于c语言很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于c语言什么意思的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年6月13日 05:00

sleep有哪几种形式?sleep sleepy asleep sleeper sleeping slept sleepless 的差别和用法

sleep有哪几种形式?sleep sleepy asleep sleeper sleeping slept sleepless 的差别和用法

大家好,如果您还对sleep不太了解,没有关系,今天就由本站为大家分享sleep的知识,包括sleep有哪几种形式的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年6月10日 02:00

更多文章:


promote翻译(英语翻译倡导怎么说)

promote翻译(英语翻译倡导怎么说)

其实promote翻译的问题并不复杂,但是又很多的朋友都不太了解英语翻译倡导怎么说,因此呢,今天小编就来为大家分享promote翻译的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 06:30

用手机如何导航?开车用手机导航哪个软件最好

用手机如何导航?开车用手机导航哪个软件最好

今天给各位分享用手机如何导航的知识,其中也会对用手机如何导航进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月11日 06:20

多线程技术有什么用(多线程有什么作用)

多线程技术有什么用(多线程有什么作用)

其实多线程技术有什么用的问题并不复杂,但是又很多的朋友都不太了解多线程有什么作用,因此呢,今天小编就来为大家分享多线程技术有什么用的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 05:40

another time(another time和other time的区别)

another time(another time和other time的区别)

大家好,another time相信很多的网友都不是很明白,包括another time和other time的区别也是一样,不过没有关系,接下来就来为大家分享关于another time和another time和other time的区

2026年10月11日 05:00

java开发工具包jdk(JDK是什么意思)

java开发工具包jdk(JDK是什么意思)

其实java开发工具包jdk的问题并不复杂,但是又很多的朋友都不太了解JDK是什么意思,因此呢,今天小编就来为大家分享java开发工具包jdk的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 04:50

mysql 命令(MySQL的基本命令)

mysql 命令(MySQL的基本命令)

大家好,如果您还对mysql 命令不太了解,没有关系,今天就由本站为大家分享mysql 命令的知识,包括MySQL的基本命令的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月11日 03:00

手机云备份是什么意思?手机上的云备份有什么用 怎么用呢

手机云备份是什么意思?手机上的云备份有什么用 怎么用呢

各位老铁们,大家好,今天由我来为大家分享云备份,以及手机云备份是什么意思的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年10月11日 02:40

java遍历map的key(java Map 怎么遍历)

java遍历map的key(java Map 怎么遍历)

大家好,java遍历map的key相信很多的网友都不是很明白,包括java Map 怎么遍历也是一样,不过没有关系,接下来就来为大家分享关于java遍历map的key和java Map 怎么遍历的一些知识点,大家可以关注收藏,免得下次来找不

2026年10月11日 02:20

微信xlsx文件怎么打开(苹果手机微信打开excel)

微信xlsx文件怎么打开(苹果手机微信打开excel)

大家好,关于微信xlsx文件怎么打开很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于苹果手机微信打开excel的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月11日 01:10

reduce用法和短语(减少的英文短语有哪些)

reduce用法和短语(减少的英文短语有哪些)

其实reduce用法和短语的问题并不复杂,但是又很多的朋友都不太了解减少的英文短语有哪些,因此呢,今天小编就来为大家分享reduce用法和短语的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 00:40

最近更新

promote翻译(英语翻译倡导怎么说)
2026-10-11 06:30:03 浏览:0
热门文章

标签列表