c语言睡眠的函数 睡眠排序c语言
c语言中的 _sleep() 函数谁能帮忙介绍下,注意不是sleep,也不是Sleep。编译会有警告,但没有错.
警告 1 warning C4996: '_sleep': This function or variable has been superceded by newer library or operating system functionality. Consider using Sleep instead. See online help for details. c:\users\administrator\documents\visual studio 2012\projects\test001\test001\源.cpp 6
创新互联建站是专业的文成网站建设公司,文成接单;提供成都网站建设、成都网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行文成网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
警告1 警告C4996:'_sleep':该函数或变量已经被新的库或操作系统的功能所取代。考虑使用,而不是睡眠。详细信息请参见在线帮助。 C:\用户\管理员\文档\ Visual Studio 2012中\项目\ test001\ test001\源的.cpp6
就是说最好用新的Sleep(); 来自windows.h或winbase.h
C语言中sleep函数的原理是什么?
原理应该是这样的:
例如执行sleep(3),表示当前线程停滞3ms后再继续执行下面的代码,底层步骤是:
创建一个元素{timeMillis:[当前时间戳+3ms],threadId:[线程id]},并将该元素按顺序插入定时回调队列中,比如现在操作系统中有3个定时正在停滞中,分别是1ms、10ms、3ms之后唤醒,那么这个队列就类似这样子:{timeMillis:110928283,threadId:106}-{timeMillis:110928285,threadId:211}-{timeMillis:110928292,threadId:189},时间从小到大排序;
每当定时器产生一次中断时,中断回调函数中就会获取这个队列中第一个元素,将其timeMillis与当前时间戳比较,如果相等或超时,就表示该元素对应的线程106号线程需要唤醒了,则将106号线程的状态设置为TASK_RUNNING(就绪态),当下一次进程切换时,106线程就可以被切换到并执行了;
注意:2中说的定时器和系统线程调度时钟定时器我觉得不是一个,而是两个时钟定时器,不确定。
c语言的 sleep函数到底在哪个头文件里啊
在windows.h里面。
在VC中使用时,sleep函数的头文件为windows。h,在Linux下,gcc编译器中,使用的头文件因gcc版本的不同而不同
在VC中,Sleep中的第一个英文字符为大写的"S",在linux下不要大写,在标准C中是sleep,不要大写,简单的说VC用Sleep,别的一律使用sleep
在VC中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000);在Linux下,sleep()里面的单位是秒,而不是毫秒。
扩展资料:
Windows.h头文件之所重要,是因为头文件封装了许多库函数以及一些类,将一些复杂的工作由库函数处理,Windows.h头文件中包含了Windef.h、Winnt.h、Winbase.h、Winuser.h、Wingdi.h等头文件,涉及到了Windows内核API,图形界面接口,图形设备函数等重要的功能。
在C语言家族程序中,头文件被大量使用。一般而言,每个C++/C程序通常由头文件和定义文件组成。头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明,而定义文件用于保存程序的实现。
参考资料来源:百度百科-windows.h
分享标题:c语言睡眠的函数 睡眠排序c语言
转载注明:http://ybzwz.com/article/hiiiec.html