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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下
4 p! `# h" H, p建立 xsleep.cpp和xsleep.p文件6 c2 w* j% v/ g9 B
xsleep.cpp文件代码如下
. V# [5 l3 o' l: G6 ~8 g
  1. //Download by http://www.cncml.com+ ~' i* O( v: }3 J( w, h
  2. #include <windows.h>
    % |! L( d- Z; T% V8 C! r2 q
  3. #include <stdafx.h>
    ( U( D) ?4 M: G+ v" H0 @1 r3 q) c! H. D

  4. ! y+ f5 K& r" b& _' q
  5. // This structure is used internally by the XSleep function # d8 n! K/ Y/ }: F5 T) C0 N
  6. struct XSleep_Structure; Z0 m" H8 H* ~9 W9 {8 v
  7. {
    & b! |2 `1 p# o2 r0 f7 b
  8.         int duration;
    9 w1 O* C" u( R' C0 D
  9.         HANDLE eventHandle;6 \1 f1 q  h; h4 x
  10. };
    ; |8 H+ W; p5 F( D

  11. 4 B3 M4 }% `5 F
  12. 1 @3 V# C  c2 H. \/ C* M
  13. //////////////////////////////////////////////////////////////////////6 r& C6 e! B+ U& r! U( q
  14. // Function  : XSleepThread()) Y) _- I4 F, c$ P
  15. // Purpose   : The thread which will sleep for the given duration) m  T% X, A8 F3 R7 X( ]
  16. // Returns   : DWORD WINAPI8 h- i5 Y7 G5 ?; ~# u. Q& s% s
  17. // Parameters:       4 V3 m) ?+ _/ s6 E% l
  18. //  1. pWaitTime -
    % t. i. Y9 N) j0 {& V
  19. //////////////////////////////////////////////////////////////////////: j3 [8 {/ W! K  [
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    9 ?1 q1 T; ]3 k, d9 p
  21. {
    ( q' k3 X' g  I: i) w3 @
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    # y6 W2 D! _+ k; w2 u9 ?

  23. 7 S" V* C! [/ \: O5 Y* y$ o% V7 ?
  24.         Sleep(sleep->duration);3 V! k( c8 [& Y" e
  25.         SetEvent(sleep->eventHandle);# ^" e+ A4 c5 h. d' j: X: ^3 p% K
  26. + ]7 W8 z1 @4 p6 R( ^
  27.         return 0;
    # {0 o; m7 B# N: i3 I' p  ~% F
  28. }
    - O/ J' V5 L* L

  29. 0 p- F) o. ~$ \1 T# C4 H" ~4 h
  30. //////////////////////////////////////////////////////////////////////; d3 T8 c1 u; N( ~. z
  31. // Function  : XSleep()* b: I4 w7 V! U% R. k
  32. // Purpose   : To make the application sleep for the specified time
    - w9 a* ^! M" N1 J
  33. //             duration.- r0 K1 H! y* l! q. B# j* X
  34. //             Duration the entire time duration XSleep sleeps, it5 ]0 h+ J6 k9 p  `
  35. //             keeps processing the message pump, to ensure that all
    - `: G9 E( x' j. C) ~( z" H
  36. //             messages are posted and that the calling thread does
    " @- S4 L0 f/ z3 Z
  37. //             not appear to block all threads!' R! i( r% v) s/ {* e
  38. // Returns   : none% x% u8 j% S! R' T8 r5 Y' t
  39. // Parameters:         V2 \! H5 Z! T. y
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.; W3 k) m* Y' }6 q* [/ s- V% V
  41. //////////////////////////////////////////////////////////////////////
    + n6 ?. T  g8 k4 d! L
  42. void XSleep(int nWaitInMSecs,int nAscll)
    & S+ s0 B2 i2 _9 G! _
  43. {. C+ s  m; E: C3 C7 n' J. L
  44.                
    / [' `; E! ^# w
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
/ q& T; }# U4 u( I' D" R9 M' ^

; a: W  r5 r( u7 O+ O; K' {5 jxsleep.h文件代码
" O0 ], V& o  T' K" s, n
! f9 q; [2 A7 H9 {1 S, ?
  1. //Download by http://www.cncml.com
    - \9 W' b. t. u+ X* ]% h0 O
  2. #ifndef _XSLEEP_H_0 I% I2 g7 x' O
  3. #define _XSLEEP_H_
    9 A, j, A3 {4 |; q# T% b

  4.   ^# T" P& i5 W) Y/ y% }" v
  5. void XSleep(int nWaitInMSecs, int nAscll);4 A3 ~! s6 ~# q$ T2 n

  6. 0 \/ V' ~: V9 b  }+ v" {. f8 y5 {
  7. #endif // _XSLEEP_H_
      U0 b" {; Z/ Q# \  j- m
复制代码

# q) t2 E# |7 ~, w6 }/ G( C
2 I( ~5 |( E' Q' z# u  A; O6 T% Amfc中的调用代码如下
( v/ U7 M, u9 P7 x$ ^5 h- D
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
6 J( p' t3 y0 P' O+ n
6 C5 s7 y0 n0 q2 _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-18 14:37 , Processed in 0.116194 second(s), 19 queries .

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