windows ce课件实验2.线程同步_第1页
windows ce课件实验2.线程同步_第2页
windows ce课件实验2.线程同步_第3页
windows ce课件实验2.线程同步_第4页
已阅读5页,还剩6页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验 :使用EVC利用同步对象实现“线程同步” 哈尔滨理工大学软件学院2007实验目的:1. 熟悉Win CE中线程的基本概念;2. 熟悉在EVC4.0调试嵌入式应用程序的基本方法;3. 掌握控件(Group Box,List Box,Button)的使用方法;4. 掌握创建线程的方法;5. 掌握使用“事件对象”实现线程同步;实验任务:1. 编程实现未使用线程同步,使用两个线程对一数组同时赋值;2. 编程实现使用线程同步,使用两个线程对一数组同时赋值;线程调度Windows CE以抢先方式来调度线程。线程以“时间片”为单位来运行。过了那个时间以后,如果线程没有放弃它的时间片,并且如果线程并不紧

2、急,就会挂起线程。 Windows CE将根据优先级方法来决定要运行的线程,高优先级的线程将在低优先级的线程前面调度,同一优先级的线程会以循环的方式运行。如果高优先级的线程停止堵塞,而低优先级的线程目前正在运行,则低优先级的线程会被立即挂起,系统同时去调度高优先级的线程。 线程优先级Windows CE中没有进程优先级,所有的进程都是平等的。单个线程可以有不同的优先级。在Windows CE中,一个线程可以有8种优先级: 优先级由高到低依次为(冒号后面为优先数) THREAD_PRIORITY_TIME_CRITICAL: 0 THREAD_PRIORITY_HIGHEST: 1 THREAD

3、_PRIORITY_ABOVE_NORMAL: 2 THREAD_PRIORITY_NORMAL: 3 THREAD_PRIORITY_BELOW_NORMAL: 4 THREAD_PRIORITY_LOWEST: 5 THREAD_PRIORITY_ABOVE_IDLE: 6 THREAD_PRIORITY_IDLE: 7 线程API函数线程函数 所有的线程都必须从一个指定的函数开始执行,该函数就是线程函数。线程函数定义了线程执行的内容。 DWORD WINAPI ThreadProc ( LPVOID lpParameter /参数指针 ); 线程API函数Windows CE提供了Cre

4、ateThread函数来创建线程 HANDLE WINAPI CreateThread ( LPSECURITY_ATTRIBUTES lpThreadAttributes, /线程安全指针,不支持,NULL SIZE_T dwStackSize, /为自己所用堆栈分配的地址空间大小,不支持,0 LPTHREAD_START_ROUTINE lpStartAddress, /线程函数地址 LPVOID lpParameter, /传入线程函数的参数 DWORD dwCreationFlags, /控制线程创建的附加标志,0或CREATE_SUSPENDED LPDWORD lpThreadId

5、 /新线程的ID值 ); 如果CreateThread函数执行成功,它将创建新线程并返回新线程的句柄。如果不需要使用此线程句柄,则应将其关闭。如果CreateThread函数执行失败,将返回NULL值。利用事件对象同步“事件对象”是实现线程同步最基本的方法之一。一个事件对象可以处于“已标识”和“未标识”两种状态,如果将事件对象设置为“已标识”状态,表示可以执行同步操作,事件对象处于“未标识”状态,则表示需要等待事件对象变为“已标识”状态才可以进行同步操作。利用事件对象同步所需的API创建事件对象函数CreateEvent HANDLE WINAPI CreateEvent ( LPSECURI

6、TY_ATTRIBUTES lpEventAttributes, /不支持,NULL BOOL bManualReset, /设置是否手动设置事件对象状态 BOOL bInitialState, /事件对象初始状态 LPCTSTR linemen /事件对象名称 ); 参数bManualReset:表示是否手动设置事件对象状态,当其值为TRUE时,在调用完等待函数WaitForSingleObject后,则必须调用ResetEvent函数,设置事件对象“未标识”,当其值为FALSE时,系统在调用完等待函数后,会自动将事件对象设置成“未标识”。参数bInitialState:表示事件对象初始状态

7、,当其值为TRUE时,事件对象初始状态为“已标识”,当其值为FALSE时,事件对象初始状态为“未标识”。利用事件对象同步所需的APISetEvent()函数和ResetEvent()函数。SetEvent()函数的功能是将事件对象设置成“已标识”状态 BOOL SetEvent ( HANDLE hEvent); /参数hEvent表示事件对象句柄ResetEvent()的功能是将事件对象设置成“未标识”状态 BOOL ResetEvent ( HANDLE hEvent); /参数hEvent表示事件对象句柄 利用事件对象同步所需的APIWaitForSingleObject()函数 DWORD WINAPI WaitForSingleObject ( HANDLE hHandle, /表示等待的对象句柄 DWORD dwMilliseconds /用于设置等待的时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论