zoukankan      html  css  js  c++  java
  • vc 控制台(console)下实现线程和定时器的例程

    源码在 D:\MyProject\利亚德\110-Frame02\s设计资料\vc 控制台(console)下实现线程和定时器的例程,使用CreateThread
    //************************************************************************************
    //本程序使用了两种实现定时的方法,都是基于API的,而不是MFC
    //
    //  1. 是使用线程定时休眠的方法,启动线程ThreadProc,在线程中输出,然后Sleep 1000ms
    //  
    //  2. 使用定时器方法,设置一个1000ms的定时器(SetTimer),然后捕捉该消息,然后调用回调函数
    //     TimerProc,在该函数中输出DEF,注意,SetTimer可以直接写回调函数地址,不必捕捉消息。
    //  3. 本例子已经很详细了。
    //  4. 祝你好运。
    //
    //************************************************************************************

    #include "stdafx.h"
    #include <windows.h>

    DWORD WINAPI ThreadProc(  LPVOID lpParameter )//方法1
    {
     static DWORD tick=0;
     DWORD tmp = GetTickCount();
     while(1)
     {  
      tick = GetTickCount()-tmp;//获得系统从启动开始到现在的ms数
      tmp = GetTickCount();
      printf("THREAD_PROC: abc %d, tickcount: %d\n",tick,tmp);//打印abc和上次打印到这次打印之间的毫秒间隔。
      Sleep(1000);//每隔1000ms打印abc
     }
    }
    VOID  TimerProc()//方法2
    {  
     static DWORD tick=0;
     static DWORD tmp = GetTickCount();
     
     tick = GetTickCount()-tmp;
     tmp = GetTickCount();
     printf(" TimerProc________________def %d\n",tick);

    }


    int main()
    {
     DWORD dwthread;
        ::CreateThread(NULL,0,ThreadProc,(LPVOID)0,1024,&dwthread);//生成一个线程,在该线程里每1000ms输出一个"abc",然后SLEEP
     SetTimer(0,0,1000,0);//设置一个定时器,定时器的回调函数为0,仅产生定时器消息,在main函数里捕捉该消息
     MSG msg;
     bool flag;
       
     while(1)//该循环捕捉定时器消息,并且防止main函数退出
     {
      PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE);
      while( (flag = GetMessage( &msg, NULL, 0, 0 )) != 0)
      {  
        if (flag == -1)
        {
         // handle the error and possibly exit
        }
        else if(msg.message==WM_TIMER)
        { 
         TimerProc();//如果是定时器消息,调用timerproc

        }
        else
        {
         TranslateMessage(&msg);  
         DispatchMessage(&msg);  
        }
      }
     }

    }

  • 相关阅读:
    ORMs Under the Hood
    django-spaghetti-and-meatballs 0.2.0 : Python Package Index
    Django
    What is entity relationship diagram?
    Sov5搜索
    Django中国社区
    Django中的Model(字段)
    Django中的Model(操作表)
    Fbric、Ansible、Docker、Chaos Monkey:DevOps工具的年中回顾
    基于ansible role实现LAMP平台批量部署
  • 原文地址:https://www.cnblogs.com/carl2380/p/2035980.html
Copyright © 2011-2022 走看看