Windows CE下的多线程编程实验

这篇博客探讨了在Windows CE环境下进行多线程编程的实践,包括线程的正常退出方式,如线程自身return或使用ExitThread函数,以及主线程如何通过WaitForSingleObject函数等待线程结束,并获取线程的退出状态。此外,还提到了资源释放的重要步骤,即使用CloseHandle函数关闭核心对象。
摘要由CSDN通过智能技术生成
Windows CE多线程编程包括线程的启动、线程的运行状态控制、线程同步及数据通信和线程的正常/非正常退出。本项目的软件及架构在多线程设计上,要求通过多线程实现异步的数据采集及绘制,以提高系统运行效率。
 
1.        线程的启动
Win32API提供支持多线程的启动,调用API函数CreateThread()分配资源启动线程,并返回线程句柄(Handle),以控制线程状态。客观上,这种方法在Win32平台上是通用的。然而,通用不一定最好。函数原型:<winbase.h>
HANDLE
WINAPI
CreateThread (
    LPSECURITY_ATTRIBUTES lpsa,    
//  security属性,在WinCE下须为NULL
    DWORD   cbStack,                               //  堆栈大小,除非定义宏,否则被忽略
    LPTHREAD_START_ROUTINE lpStartAddr,     //  起始地址,即C的函数指针
    LPVOID lpvThreadParam,         //  自定义的传入线程参数
    DWORD fdwCreate,                   //  标识线程是否立即运行,默认是
LPDWORD lpIDThread                //  新线程ID
);

线程自身应用return结束,也可使用ExitThread()结束;主线程可以使用WaitForSingleObject(hThreadHandle, dwMilliseconds)等待线程结束,然后使用GetExitCode()获得返回码,最后使用CloseHandle()释放核心对象

Window C Runtime Library提供了封装CreateThread的函数_beginthreadex(),使得CRT对线程可以进行登记。函数原型一般在<process.h>中,但Windows SDK4.2没有对此函数的定义。
MFC是在eVC下提供的类库,基本上以MFC程序框架下封装了大多API系统调用,优点不仅仅是使用方便,更重要的是对系统的运行稳定性、正确性都提供的更高的保障。通过查阅得知,通过MFC提供的封装API函数AfxCreateThread()创建新线程,返回MFC的CWinThread类对象实例,这样通过对象实例可以更方便安全的进行线程的行为控制。函数原型为:<afxwin.h>
CWinThread *  AFXAPI AfxBeginThread(       //  创建工作者线程重载方法
     AFX_THREADPROC pfnThreadProc,     //  线程起始函数
     LPVOID pParam,                                        //  自定义参数
      int  nPriority  =  THREAD_PRIORITY_NORMAL,     //  优先级
     UINT nStackSize  =   0 ,                                                //  栈大小
     DWORD dwCreateFlags  =   0 ,                                 // 标识线程是否立即运行,默认是
     LPSECURITY_ATTRIBUTES lpSecurityAttrs  =  NULL     //  安全属性
);

CWinThread
*  AFXAPI AfxBeginThread(    // 创建UI线程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值