您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13995|回复: 0
打印 上一主题 下一主题

[C++学习资料] 非滞后式延迟执行

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下
5 }  F' v: g9 X; \建立 xsleep.cpp和xsleep.p文件
  g, _2 z. ?) ~/ s- T. \  ?xsleep.cpp文件代码如下5 A9 N7 o8 d( U* W$ Y7 S4 N
  1. //Download by http://www.cncml.com( s: z0 A% q" Y' U
  2. #include <windows.h>
    ; B# r8 u& }( C) `2 n+ ^" x
  3. #include <stdafx.h>
    ' e' H4 j* h/ A- ~" H9 p
  4. & l( E, d+ v$ I! q- d: o" Z. ?
  5. // This structure is used internally by the XSleep function ' o2 u9 K' s/ x/ X! s
  6. struct XSleep_Structure
    & W+ z4 _& D6 B; D+ W! q) l
  7. {
    ; N+ h+ P) d3 u5 m' r. [
  8.         int duration;- Q* _* a/ s- R+ Q2 p
  9.         HANDLE eventHandle;- T+ i0 P9 b* }% U
  10. };; P" q- Q% |. X1 M4 x

  11. . Y# W7 w) f! Z6 [

  12. " w0 p$ p5 A' {4 t- J
  13. //////////////////////////////////////////////////////////////////////
    . o2 o4 K# D5 f0 R0 ^
  14. // Function  : XSleepThread(): u5 I" C; E5 N& H
  15. // Purpose   : The thread which will sleep for the given duration; q' J* L' ^" K( g' U
  16. // Returns   : DWORD WINAPI
    5 C/ y* q9 u, T5 n  Z* U
  17. // Parameters:       1 M: s' ^, Y, w! h
  18. //  1. pWaitTime -
    , {+ y4 d* K! v
  19. //////////////////////////////////////////////////////////////////////* _( z& N. p! L) k$ v  ^
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    # q5 ^2 t* q/ g
  21. {
    5 t2 I0 {  N0 q
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    ! B8 P% n3 P, t6 s' p3 \4 W6 e
  23. 6 T' n3 y/ _0 q$ A  U
  24.         Sleep(sleep->duration);; z6 f: Y+ S: V) ~& }
  25.         SetEvent(sleep->eventHandle);
    * T: o% R2 r: p

  26.   z: P6 s* B( C5 z
  27.         return 0;
    3 G4 ~0 `( @; q% F* G
  28. }& Q, b9 ?! E) q$ K

  29. ( C/ j) e) V1 q0 g5 H2 Z
  30. //////////////////////////////////////////////////////////////////////
    4 p# g% Y! W9 L* r: N
  31. // Function  : XSleep()
    + r+ j6 E8 \* c
  32. // Purpose   : To make the application sleep for the specified time
    $ {; ~' T! i8 J* q  a* E
  33. //             duration.
      T- b7 {( z  A  l
  34. //             Duration the entire time duration XSleep sleeps, it
    ! R  [0 z* n6 G' z
  35. //             keeps processing the message pump, to ensure that all
    ) L( f9 R/ L* t5 H$ z
  36. //             messages are posted and that the calling thread does
    8 k) i7 _& ]2 O* O- P
  37. //             not appear to block all threads!4 \( g' ^- g% }3 f' f8 Z
  38. // Returns   : none
    6 i! {; \5 ?9 |* }; J! `1 ^' w
  39. // Parameters:      
    0 J# t$ ]6 e0 x$ L- U- U
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.  A* ]6 f4 u, l' h' f0 ]
  41. //////////////////////////////////////////////////////////////////////: K% V4 ]( R; t; t( x+ l5 {' a! J
  42. void XSleep(int nWaitInMSecs,int nAscll)
    0 Z3 D8 H1 N( p0 J3 V
  43. {# K2 N) n6 b5 C# {8 T% g
  44.                 1 y6 ~' I0 S* o+ E8 ?1 ^0 i$ @$ m
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
4 \0 c! R9 g. G5 V3 {- P
  I1 H2 `1 w9 N! {( X/ C8 z
xsleep.h文件代码
9 o7 B; ]+ _3 b' y8 G8 x/ h: Q3 j, M8 {+ g9 i/ u/ U
  1. //Download by http://www.cncml.com4 i! s* f) G4 r
  2. #ifndef _XSLEEP_H_0 x+ w3 m" W3 d+ K5 S
  3. #define _XSLEEP_H_
    9 G! u5 p2 d$ J: z6 n6 a" H5 p- f
  4. 7 Z! y0 u/ y( D) R  {0 G# p6 I
  5. void XSleep(int nWaitInMSecs, int nAscll);6 S/ I% C: O) H1 l5 ~. h2 k
  6. 5 p7 L4 G/ r* q. e) U
  7. #endif // _XSLEEP_H_
    # N1 V" D, q9 |+ i! x: H
复制代码

' e  N- z' o) t, A( V! w
( G! N, \! l$ Q+ m' X& D& E! jmfc中的调用代码如下
$ G8 G9 Y. b: b- C& [7 X
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
$ F$ j* v' r( R' {* g

2 C' D( y* [, B5 `- P3 D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-20 04:18 , Processed in 0.070584 second(s), 20 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!