实验三应用程序设计.docxVIP

  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文档。上传文档
查看更多
实验三 多线程应用程序设计 一、 实验目的 1?了解多线程程序设计的基本原理; 2?学习pthread库函数的使用。 二、 实验设备 硬件:UP?TECHS2410/P270 DVP教学科研系统、PC机Pentium 500以上 硬盘10G 以上,内存大128M 软件:PC 机操作系统 REDHAT LINUX 9.0 + MINICOM+ARM-LINUX 开发环境 三、实验内容 读懂pthread.c的源代码,熟悉几个重要的PTHREAD库函数的使用。掌握 共享锁和信号量的使用方法。进入/arm2410cl/exp/basic/32_pthread目录,运行 make产生pthread程序,使用NFS方式连接开发主机进行运行实验。 !1! 实验步骤 1?阅读源代码 /*向缓冲区中写入一个整数*/ void put(struct prodcons * b, int data) ( pthread^mutex _lock(b-lock); /*等待缓冲区非满勺 while ((b-writepos + 1) % BUFFER_SIZE == b-readpos) { printf(Hwait for not full\nn); pthread_cond_wait(b-notfull, b-lock); /*写数据并且指针前移*/ b-buffer[b-writepos] = data; b-writepos++; if (b-writepos = BUFFER_SIZE) b-writepos = 0; /*设置缓冲区非空信号*/ pthrcad_cond_signal(b?notcmpty); pthread_mutex_unlock(b?lock); /*从缓冲区屮读出一个整数*/ int get(struct prodcons * b) in( data; pthread_mutex _lock(b-lock); /*等待缓冲区非空*/ while (b-writepos == b-readpos) { printf(Mwait for no【emp(y\nM); plhread_cond_wait(b-notempty, b-lock); } /*读数据并且指针前移*/ data = b-buffer [ b-readposl; b-readpos++; if (b-readpos = BUFFER_SIZE) b-readpos = 0; /*设置缓冲区非满信号*/ pthrcad_cond_signal(b?n otfull); pthread_mutex_unlock(b-lock); return data; /* */ void * producer(void * data) { int n; for (n = 0; n 1000; n++) { 〃生产者不断地向共亨缓冲区中写数据 printf(“ put-%d\nH, n); 〃显示生产者的状态 put(buffer, n); } pul(buffer, OVER); printf(Hproducer stopped!\nn); return NULL; ) /* */ void * consumer(void * data) 〃消费者线程 { int d; while (1)) d = get(buffer); if(d = OVER ) break; 〃当消费线程结束则退岀 printf( %d-get\n\ d); 〃显示线程当前状态 } printf(consumer stopped return NULL; /* */ int main(void) { pthread_t th_a, th_b; void * retval; init(buffer); 〃初始化共亨缓冲区 pthread_create(th_a, NULL, producer, 0); 〃创建生产者线程 pthread_create(th_b, NULL, consumer, 0): 〃创建消费者线程 /*等待生产者和消费者结束*/ pthreadjoin(th_a, retval); 〃等待生产者和消费线程的结束 pthread」oin(th_b, retval); return 0; ) 2.检查源程序和Makefile文件的正确性 [root@BC root]# cd /arm2410cl/exp/basic/02_pthread [root@BC 02_pthread]# Is 在实验中,实验所需的代码在/arm2410cl/exp/basic/J2_pthread目录下,其中 有两个文件。其小的Makefile文件是用来编译源程序pthread.c的;而pthread

文档评论(0)

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

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

1亿VIP精品文档

相关文档