WINCE 线程

// WIN32THREAD.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "windows.h"

DWORD WINAPI HelloThread(LPVOID);

int _tmain(int argc, _TCHAR* argv[])
{
      HANDLE hThrd;
      DWORD threadId;
      DWORD exitCode = 0;
      int i =13;//传递到线程里的参数
      int rc;
      /*
       * CREATE_SUSPENDED线程挂起。
       * hThrd属于进程 核心对象拥有,非该线程拥有。
       * 销毁的时候计数-1,默认线程计数为2。
       */
      hThrd = CreateThread(NULL,0,HelloThread,(LPVOID)i,CREATE_SUSPENDED,&threadId);
      ResumeThread(hThrd);
      //等待方式1
      //Sleep(20000);

       /*
        * BUSY LOOP,等待方式2,大量的CPU等待资源浪费
        * 持续不断检查返回值可以决定一个线程是否还在运行,1-2个线程可以这样。
        * 绝对不要在WIN32中这样使用
        */
      //for (;;)
      //{
      ////线程状态判断,不是好方法,无法确定线程还在运行,是否结束。是线程函数的返回值、
      //GetExitCodeThread(hThrd,&exitCode);
      //if(exitCode != STILL_ACTIVE)
      //{
      // puts("线程死了");
      //
      //}
      //else
      //{
      // puts("线程活了");
      //
      //}
      //}

      /*
       * 等待方式3
       * 主线程睡眠等待,HelloThread线程开始
       */
      rc=GetLastError();
      if(rc == WAIT_OBJECT_0)
      {

          puts("激活");
      }
      WaitForSingleObject(hThrd, INFINITE);
      CloseHandle(hThrd);
      return EXIT_SUCCESS;
}

/// <summary>
/// 线程处理函数
/// </summary>
DWORD WINAPI HelloThread(LPVOID n)
{
      printf("%d",n);
      MessageBox(NULL, _T("hello"), TEXT("O(∩_∩)O~"), 0);
      return 0;

}

 

总结:

  1. 1个线程栈上分配以1MB内存空间。可供分配32MB。
  2. 多线程下手持设备用电量变快
  3. 最好用WaitForSingleObject

你可能感兴趣的:(WinCE)