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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下
* Y7 d% `* E# s+ i2 v% o建立 xsleep.cpp和xsleep.p文件
2 e  n; p- R1 Lxsleep.cpp文件代码如下
2 \/ z8 `% A0 D' K" M
  1. //Download by http://www.cncml.com6 Y5 a* f! G# ^. o/ Y3 @  |
  2. #include <windows.h>  \( p  k! N, B  p- ?# x, s
  3. #include <stdafx.h>
    - U1 C3 w$ ?( U! [9 W3 J, @
  4. . E5 d; K' z" c' M, T; e9 K
  5. // This structure is used internally by the XSleep function " |5 B) ?8 N- Y( w2 C  G2 F) H
  6. struct XSleep_Structure+ ?* e# \2 F5 o
  7. {
    3 H  F5 C% x, k8 P- \
  8.         int duration;
    / E  q6 A# q, [2 W) ^0 K
  9.         HANDLE eventHandle;# g0 H/ W/ ^, f/ C2 C
  10. };$ b0 m1 P9 t/ y7 h( d3 N

  11. " i& G+ r- }% O! M7 K" d1 E

  12. 3 R% ~6 K- `2 A: v5 _% G
  13. //////////////////////////////////////////////////////////////////////* a5 T  J  S$ E
  14. // Function  : XSleepThread()1 T. i1 K. w* u9 n! ?
  15. // Purpose   : The thread which will sleep for the given duration* C/ z1 }) R. R% ~9 }. N2 {
  16. // Returns   : DWORD WINAPI
    ( u9 y) C  X& J4 c
  17. // Parameters:      
    , `  w  f0 v) s0 e  f- G
  18. //  1. pWaitTime -
    ! l* O9 v+ u& D! ~4 ^$ P
  19. //////////////////////////////////////////////////////////////////////$ L) g# m2 C6 E& m2 B4 h! B
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    ; j" K& L1 A4 T  g8 \
  21. {
    ) l4 i2 L6 W. Z# m+ M
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;! z' Z' z! b! C: ]  `$ o

  23. 3 s' k+ }9 o. }  u% L2 e5 O
  24.         Sleep(sleep->duration);# t: U, f. p5 D$ k+ B" J$ I
  25.         SetEvent(sleep->eventHandle);
    6 u# J4 I/ M$ B# r8 I5 h. R* [

  26. : l0 F& L, X6 M' W
  27.         return 0;
    2 h+ b) _9 B/ I7 S1 \4 K1 l
  28. }/ R, c9 \7 _+ h" X

  29. & Q9 Y* ], Y/ m: X1 _; @; i
  30. //////////////////////////////////////////////////////////////////////
    6 [0 R8 ~8 b1 l/ c3 x) s
  31. // Function  : XSleep()
    " ~% x$ @/ N# ^/ U
  32. // Purpose   : To make the application sleep for the specified time: K3 f. d! g; S2 h. d' T7 k1 _" q
  33. //             duration.$ c8 e$ L( i$ V  Q' L( g- F
  34. //             Duration the entire time duration XSleep sleeps, it
    9 z/ @! U/ z& }- T3 B$ h
  35. //             keeps processing the message pump, to ensure that all' S" q$ ]# P& v$ x* X$ q- a
  36. //             messages are posted and that the calling thread does0 e! ^# K2 A: b3 b
  37. //             not appear to block all threads!
    0 [& O% Y  M) Y$ r; L" h
  38. // Returns   : none: O4 i; j) d7 U
  39. // Parameters:      
    7 Q2 Z+ H# l8 N4 s0 E4 j
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.1 l8 a+ s' O$ G0 Y
  41. //////////////////////////////////////////////////////////////////////
    * O& v2 I8 Z: I0 x2 c
  42. void XSleep(int nWaitInMSecs,int nAscll)
    3 X; r% i+ J. h8 X
  43. {
    : Y. \9 `( B  O0 c0 o  G- Y! Z
  44.                
    ) E5 [: h4 q6 ]& @* U+ ^2 h
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
3 |, w+ p. @7 J/ X, {# J9 N, F! f
- b7 t0 T4 h( V# z; n9 ~
xsleep.h文件代码
4 A2 a& O3 b2 E# Y1 B; ]; n" ^0 c4 e$ y; o4 r! g
  1. //Download by http://www.cncml.com
    0 n- u7 u; G7 M' V& P
  2. #ifndef _XSLEEP_H_
      O! C1 S& s! ?8 z) t
  3. #define _XSLEEP_H_
    $ D% ^' s, o) q2 a

  4. . G1 C- V. Z, J0 @
  5. void XSleep(int nWaitInMSecs, int nAscll);
    0 c+ z1 T; u% v& H
  6. 1 k8 y' }3 o) R7 k# |
  7. #endif // _XSLEEP_H_  ?( S) k) _$ y! w( W
复制代码

1 N# K" P+ n' a: K/ k
5 }  H, Q0 s' R! P& t% omfc中的调用代码如下
% c2 c% S% `7 T- @0 |
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
4 a0 M9 Y9 `1 m5 Y8 o& \

* Q) p- _! k+ P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 18:14 , Processed in 0.054803 second(s), 19 queries .

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