嵌入式操作系统—多线程-实验报告11-多线程编程).docxVIP

嵌入式操作系统—多线程-实验报告11-多线程编程).docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式操作系统—多线程-实验报告11-多线程编程)

程序实验二:11-多线程编程实验专业班级实验日期姓名学号实验一(p284:11-thread.c)1、软件功能描述创建3个线程,为了更好的描述线程之间的并行执行,让3个线程重用同一个执行函数。每个线程都有5次循环,每次循环之间会随机等待1-10s的时间。2、程序流程设计3.部分程序代码注释(关键函数或代码)res = pthread_create(thread[no], NULL, thrd_func, (void*)no);创建线程res = pthread_join(thread[no], thrd_ret);等待线程结束4.编译、运行方法及结果(抓屏)5.结果分析每个线程的运行和结束在宏观上是独立与并行的。实验二(p287: 11-thread_mutex.c)1、软件功能描述增加线程互斥锁功能,实现原本独立与无序的多个线程能够按序执行。2、程序流程设计3.部分程序代码注释(关键函数或代码)res = pthread_mutex_lock(mutex);互斥锁上锁pthread_create(thread[no], NULL, thrd_func, (void*)no);创建线程pthread_mutex_unlock(mutex);互斥锁解锁4.编译、运行方法及结果(抓屏)5.结果分析通过增加互斥锁之后,在同一时刻只能有一个线程能够对共享资源进行操作。其他线程想要上锁已经被上锁的互斥锁,则线程就会被挂起。因此线程将按照创建的顺序执行。实验三(P291:11-thread_sem.c)1、软件功能描述利用信号量同步机制实现3个线程之间的有序执行,只是执行顺序跟创建线程相反。2、程序流程设计3.部分程序代码注释(关键函数或代码)sem_wait(sem[thrd_num]);进行P操作res = pthread_create(thread[no], NULL, thrd_func, (void*)no);创建新线程sem_post(sem[THREAD_NUMBER - 1]);对最后创建的线程信号量进行V操作sem_destroy(sem[no]);4.编译、运行方法及结果(抓屏)5.结果分析代码有问题,运行之后首先执行的是Thread 2然后就死锁了,我觉得线程解锁应该放在线程执行代码里面。但是这样仍然是是先执行的Thread 2。实验四(p295: 11-thread_attr.c)1、软件功能描述创建一个线程,这个线程具有绑定和分离属性,而且主线程通过一个finish_flag标志变量来获得线程结束的消息。2、程序流程设计3.部分程序代码注释(关键函数或代码)res = pthread_attr_init(attr);初始化线程属性对象res = pthread_attr_setscope(attr, PTHREAD_SCOPE_SYSTEM);设置线程绑定属性res += pthread_attr_setdetachstate(attr, PTHREAD_CREATE_DETACHED);设置线程分离属性res = pthread_create(thread, attr, thrd_func, NULL);创建子线程pthread_attr_destroy(attr);释放线程属性对象4.编译、运行方法及结果(抓屏)5.结果分析通过给线程设置分离属性后,它结束时立即释放它所占有的系统资源。从截图中可以看出线程一结束,系统使用内存就恢复到了线程运行之前的状态。实验五(p298: 11-producer-customer.c)1、软件功能描述模拟生产者和消费者,生产者将产品放入缓冲区,消费者将产品从缓冲区中取走。2、程序流程设计3.部分程序代码注释(关键函数或代码)sem_wait(avail);sem_wait(mutex);P信号量avail和mutexsem_post(full);sem_post(mutex);V操作x信号量full和mutex4.编译、运行方法及结果(抓屏)5.结果分析代码中有问题,应该把if((mkfifo(MYFIFO, O_CREATE|O_EXCL) 0) (errno != EEXIST))改为if((mkfifo(MYFIFO, 0777) 0) (errno != EEXIST))否则会出现Open fifoError的问题

文档评论(0)

weizhent2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档