WinCE 的线程问题

 

·一个进程创建之后,同时将创建一个主线程。可以在主线程中创建该进程的其他线程。进程可以被视为线程的容器。一个线程默认的栈大小为64KB,也可以在创建线程的时候自定义栈的大小。同一个进程中,一个线程分配的内存,可以被其他线程所访问。不同进程中的线程如要互相访问,则需通过进程间通信来处理。

·线程有5种状态:运行态,挂起态,休眠态,阻塞态和终止态。

·创建线程:通过CreateThread函数来完成。

HANDLE CreateThread(

  LPSECURITY_ATTRIBUTES lpsa,

  DWORD cbStack,

  LPTHREAD_START_ROUTINE lpStartAddr,

  LPVOID lpvThreadParam,

  DWORD fdwCreate,

  LPDWORD lpIDThread

);

参数:

lpsa设置为NULL。

cbStack定义堆栈大小,设置为0,则为默认的64KB。也可以设定为其他值,来自定义栈的大小,前提是下面的fdwCreate要设置为STACK_SIZE_PARAM_IS_A_RESERVATION

lpStartAddr指向应用程序定义的LPTHREAD_START_ROUTINE类型的函数的指针,该函数由此创建线程执行,表明新线程起始地址。这个函数就是该线程的入口函数,如同main函数是主线程的入口函数。

LpvThreadParam向该线程传递参数。

fdwCreate设置为CREATE_SUSPENDED创建一个挂起的线程,设置为STACK_SIZE_PARAM_IS_A_RESERVATION,自定义线程的栈大小。设置为0,线程创建之后立即执行。

lpIDThread:返回线程ID。

返回值:

成功返回线程句柄,失败返回NULL。

 

如:

HANDLE hThread;

hThread = CreateThread(NULL,0,ThreadProc,NULL,0,NULL);

·ThreadProc函数的声明要加上WINAPI,否则编译的时候好像会出错。

如:

DWORD WINAPI ThreadProc(LPVOID lpParameter)

{

    MessageBox(NULL,_T("hello"),_T("joyzml"),MB_OK);

    return 0;

}

·GetCurrentThread函数

在一个线程内,可以通过调用GetCurrentThread函数来获取该线程的句柄。

·GetCurrentThreadId函数

在一个线程内,可以通过调用GetCurrentThreadId函数来获取该线程的ID。

·ResumeThread函数

调用该函数可以将一个挂起的线程恢复运行。

·ExitThread函数

调用该函数结束一个线程,主线程中调用该函数,将结束整个应用程序。

 

 

·线程优先级

Windows CE 5.0支持256个优先级,0-255,0最高。每个线程都有自己的优先级。创建线程默认的优先级为251。

·CeSetThreadPriority和CeGetThreadPriority函数

前者用来设置线程优先级,后者用来获取线程优先级

BOOL CeSetThreadPriority(

  HANDLE hThread,

  int nPriority

);

int CeGetThreadPriority(

  HANDLE hThread

);

·优先级规划设计

1-96:高实时性应用程序线程

97-152:驱动程序线程

153-247:低实时性应用程序线程

248-255:非实时应用程序线程

·线程量

线程量是分配给线程运行一次占用的时间片,默认的线程量通常为100ms。可以通过修改OAL中的代码来修改默认的线程量。

BOOL CeSetThreadQuantum(

  HANDLE hThread,

  DWORD dwTime

);

如上函数可以用来设置本线程的线程量。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值