给一个c++中的sleep函数的定义和用法!谢谢

给一个c++中的sleep函数的定义和用法!谢谢,第1张

C++中头文件<windowsh>下的函数

作用:延时,程序暂停若干时间。

时间,就是他的参数,单位是毫秒。

例如:

Sleep (500) ;

就是到这里停半秒,然后继续向下执行。

——————————————————

在Linux C语言中 Sleep的单位是秒

Sleep(5); //停5秒

注意:Sleep的S要大写。

——————————————————

Visual Basic

声明:Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)

库名:kernel32

说明:dwMilliseconds 必要参数,停顿的时间。单位:毫秒(ms)

文章出处:DIY部落(>

从你追问的图上看,不是sleep的问题,是vc的问题。具体解决方案如下:

“CLexe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,

你可以到相应的路径下找到这个应用程序。

因此问题可以按照以下方法解决:打开vc界面 点击VC“TOOLS(工具)”—> “Option(选择)”

—> “Directories(目录)”重新设置“Excutable Fils、Include Files、

Library Files、Source Files”的路径。很多情况可能就一个盘符的不同

(例如你的VC装在C,但是这些路径全部在D),改过来就OK了。

如果你是按照初始路径安装vc60的,路径应为:

executatble files:

C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin

C:\Program Files\Microsoft Visual Studio\VC98\BIN

C:\Program Files\Microsoft Visual Studio\Common\TOOLS

C:\Program Files\Microsoft Visual Studio\Common\TOOLS\WINNT

include files:

C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE

C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE

C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE

library files:

C:\Program Files\Microsoft Visual Studio\VC98\LIB

C:\Program Files\Microsoft Visual Studio\VC98\MFC\LIB

source files:

C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC

C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE

C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE

C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC

如果你装在其他盘里,则仿照其路径变通就行

Qt 为何没有提供 Sleep

论坛上不时见到有人问:

Qt 为什么没有提供跨平台的 sleep 函数?

使用平台相关的 Sleep 或 nanosleep 以后,界面为什么没有反应?

QThread 中提供了protected 权限的 sleep 函数,如何用到主线程中?

使用 QTest 中的 qSleep,在windows下如何隐藏控制台?

这些问题其实归结为一点:在主线程中使用这些函数是一种错误,这会直接导致界面无法刷新,用户与程序无法交互。

Qt不提供,是因为你不需要在主线程中使用 sleep 函数。

如何让程序等待一段时间

QTime

QTime t;

tstart();

while(telapsed()<1000);

这种死循环也是一种常见错误用法。但改成正确的还是比较简单的:

QTime t;

tstart();

while(telapsed()<1000)

QCoreApplication::processEvents();

不停地处理事件,以使得程序保持响应。

QElapsedTimer

这是Qt47引入的新的类,和QTime相比,它提供了更快的计算 elapsed 时间的方法。

QElapsedTimer t;

tstart();

while(telapsed()<1000)

QCoreApplication::processEvents();

QTest::qWait

这是QTest模块提供的等待函数

下面是其源代码(和我们前面的代码很像吧?):

namespace QTest

{

inline static void qWait(int ms)

{

Q_ASSERT(QCoreApplication::instance());

QElapsedTimer timer;

timerstart();

do {

QCoreApplication::processEvents(QEventLoop::AllEvents, ms);

QTest::qSleep(10);

} while (timerelapsed() < ms);

}

其实没什么魔力,对吧?但是因为它QTest模块,所以在程序中我们不要使用它。

QEventLoop

配合QTimer使用局部的 eventLoop 也是一个不错的选择。例子:

QEventLoop eventloop;

QTimer::singleShot(100, &eventloop, SLOT(quit()));

eventloopexec();

QTimer 和 QBasicTimer

这两个和本文没有什么直接关系,QTimer估计大家都很熟了。而QBasicTimer估计很少有人用。

与QTimer相比,QBasicTimer更快速、轻量、底层。

与QTimer相比,它不是QObject的派生类。

跨平台的sleep

尽管一开始我们就说了,不需要这个东西。但不排除某种场合下,你确实需要这个东西。如何实现一个跨平台的 sleep 呢?

我们一开始也提到了,QThread类 和 QTest模块都提供了sleep函数,其实我们只需要看看他们的源码就够了:

QTest 模块中的函数很简单(windows下调用Sleep,其他平台调用 nanosleep):

void QTest::qSleep(int ms)

{

QTEST_ASSERT(ms > 0);

#ifdef Q_OS_WIN

Sleep(uint(ms));

#else

struct timespec ts = { ms / 1000, (ms % 1000) 1000 1000 };

nanosleep(&ts, NULL);

#endif

}

看QThread的源码,windows下同样直接调用Sleep,但非windows的实现比这个就复杂多了:

[cpp] view plain copy

/ /internal

helper function to do thread sleeps, since usleep()/nanosleep()

aren't reliable enough (in terms of behavior and availability)

/

static void thread_sleep(struct timespec ti)

{

pthread_mutex_t mtx;

pthread_cond_t cnd;

pthread_mutex_init(&mtx, 0);

pthread_cond_init(&cnd, 0);

pthread_mutex_lock(&mtx);

(void) pthread_cond_timedwait(&cnd, &mtx, ti);

pthread_mutex_unlock(&mtx);

pthread_cond_destroy(&cnd);

pthread_mutex_destroy(&mtx);

}

void QThread::sleep(unsigned long secs)

{

struct timeval tv;

gettimeofday(&tv, 0);

struct timespec ti;

titv_sec = tvtv_sec + secs;

titv_nsec = (tvtv_usec 1000);

thread_sleep(&ti);

}

在<windowsh>里面。

在VC中使用时,sleep函数的头文件为windows。h,在Linux下,gcc编译器中,使用的头文件因gcc版本的不同而不同

在VC中,Sleep中的第一个英文字符为大写的"S",在linux下不要大写,在标准C中是sleep,不要大写,简单的说VC用Sleep,别的一律使用sleep

在VC中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000);在Linux下,sleep()里面的单位是秒,而不是毫秒。

扩展资料:

Windowsh头文件之所重要,是因为头文件封装了许多库函数以及一些类,将一些复杂的工作由库函数处理,Windowsh头文件中包含了Windefh、Winnth、Winbaseh、Winuserh、Wingdih等头文件,涉及到了Windows内核API,图形界面接口,图形设备函数等重要的功能。

在C语言家族程序中,头文件被大量使用。一般而言,每个C++/C程序通常由头文件和定义文件组成。头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明,而定义文件用于保存程序的实现。

参考资料来源:百度百科-windowsh

Sleep()函数

头文件:

#include

int

dt

=

1000;

它的功能是执行到Sleep(dt)函数时,程序睡觉(就是等在那里)

dt

毫秒。

dt

=

1000,

程序睡觉

1

秒。同

缓冲区

没有关系。

Sleep()函数

时间

计时

不很精确,每秒可能有25毫秒误差。

以上就是关于给一个c++中的sleep函数的定义和用法!谢谢全部的内容,包括:给一个c++中的sleep函数的定义和用法!谢谢、线程中sleep怎么会影响到主程序sleep、在C++中如何让程序停一秒钟我是用SLEEP()函数,编译都会出错,为什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9784453.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存