欢迎来到天天文库
浏览记录
ID:22433924
大小:151.50 KB
页数:5页
时间:2018-10-29
《线程间同步机制同步通信》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验线程间同步机制实验目的:1.掌握线程的创建;2.掌握多线程同步机制。实验要求:1.编写多线程程序;2.并且利用线程间同步机制进行线程间通信实验步骤:2.并且利用线程间同步机制进行线程间通信1)创建一个线程间同步机制,然后打开文件夹[root@localhostmkdir进程间同步机制[root@localhost~]#cd进程间同步机制2)用gedit编写pthread_mutex.h头文件,用于声明变量和函数的声明3)用gedit编写pthreadl.c文件,用于执行线程1函数,此函数主要用于线程的互斥上锁,互斥接锁pthreadl.cM11pthreadl.cX1vcidpthre
2、adl(void♦arg){inti;while(time('ii)3、printf(#,pthreadl:pthreadllockthevariable、"-};for(i=0;i<2;i++):4、dlunlockthevariable"sleep(l);l}}4)用gedit编写Pthread2.C文件,用于执行线程2函数,此函数主要用于线程的测试互斥锁,互斥锁接锁pthread2.cXvoidpthread2(void♦arg){intnolock^O;intret;while(time()5、tex_trylockM);exit(l):>elseprintf(Hpthread2:pthread2gotlock.ThevariableisW"Jock^var):if(pthread_miitex_iiniock(toutex)1=0){perror(-pthreadjnutexunlock");}elseprintf(-pthread2:pthread2unlockthevariablerH):}sleep(3);5)用gedit编写mutex.c文件,用于执行主函数,此函数主要用于互斥锁初始化,创建两个线程,设置两个线程的阻塞函7p7nrclucSec6、stdlib.^«irclucteftrclutfe7、d•)pthredd2.*);if(retfM))perror(-MWtMl2M«>-);pthreadjoinUdl:hpthre>d2)oin(id2/):c«t(O);6)编译mutex.c文件,生成执行文件[root@localhost〜】#cd进程间同步机制/[root@localhost进程间同步机制]#gccmutex.c-omutex-Ipthread[root@IocaIhost进程间同步机制]#./mutex文件(£)级错(£>$著⑺终球(I)标签⑻Iroot@localhost*]#cd逬程间TO步机W/(root(aiocalhost进S间TO步机W】#Ismute8、x.cpthreadl.cpthread2.cpthreadmutex.h[root^localhost逬桴间问步机加j]#gccmutex.c-omutex-Ipthread[root@localhost进S间冋步机釗./mutexpthreadl:pthreadllockthevariablepthread2:thevariableislockedbypthreadlpthreadl:pthreadlunlockth
3、printf(#,pthreadl:pthreadllockthevariable、"-};for(i=0;i<2;i++):4、dlunlockthevariable"sleep(l);l}}4)用gedit编写Pthread2.C文件,用于执行线程2函数,此函数主要用于线程的测试互斥锁,互斥锁接锁pthread2.cXvoidpthread2(void♦arg){intnolock^O;intret;while(time()5、tex_trylockM);exit(l):>elseprintf(Hpthread2:pthread2gotlock.ThevariableisW"Jock^var):if(pthread_miitex_iiniock(toutex)1=0){perror(-pthreadjnutexunlock");}elseprintf(-pthread2:pthread2unlockthevariablerH):}sleep(3);5)用gedit编写mutex.c文件,用于执行主函数,此函数主要用于互斥锁初始化,创建两个线程,设置两个线程的阻塞函7p7nrclucSec6、stdlib.^«irclucteftrclutfe7、d•)pthredd2.*);if(retfM))perror(-MWtMl2M«>-);pthreadjoinUdl:hpthre>d2)oin(id2/):c«t(O);6)编译mutex.c文件,生成执行文件[root@localhost〜】#cd进程间同步机制/[root@localhost进程间同步机制]#gccmutex.c-omutex-Ipthread[root@IocaIhost进程间同步机制]#./mutex文件(£)级错(£>$著⑺终球(I)标签⑻Iroot@localhost*]#cd逬程间TO步机W/(root(aiocalhost进S间TO步机W】#Ismute8、x.cpthreadl.cpthread2.cpthreadmutex.h[root^localhost逬桴间问步机加j]#gccmutex.c-omutex-Ipthread[root@localhost进S间冋步机釗./mutexpthreadl:pthreadllockthevariablepthread2:thevariableislockedbypthreadlpthreadl:pthreadlunlockth
4、dlunlockthevariable"sleep(l);l}}4)用gedit编写Pthread2.C文件,用于执行线程2函数,此函数主要用于线程的测试互斥锁,互斥锁接锁pthread2.cXvoidpthread2(void♦arg){intnolock^O;intret;while(time()5、tex_trylockM);exit(l):>elseprintf(Hpthread2:pthread2gotlock.ThevariableisW"Jock^var):if(pthread_miitex_iiniock(toutex)1=0){perror(-pthreadjnutexunlock");}elseprintf(-pthread2:pthread2unlockthevariablerH):}sleep(3);5)用gedit编写mutex.c文件,用于执行主函数,此函数主要用于互斥锁初始化,创建两个线程,设置两个线程的阻塞函7p7nrclucSec6、stdlib.^«irclucteftrclutfe7、d•)pthredd2.*);if(retfM))perror(-MWtMl2M«>-);pthreadjoinUdl:hpthre>d2)oin(id2/):c«t(O);6)编译mutex.c文件,生成执行文件[root@localhost〜】#cd进程间同步机制/[root@localhost进程间同步机制]#gccmutex.c-omutex-Ipthread[root@IocaIhost进程间同步机制]#./mutex文件(£)级错(£>$著⑺终球(I)标签⑻Iroot@localhost*]#cd逬程间TO步机W/(root(aiocalhost进S间TO步机W】#Ismute8、x.cpthreadl.cpthread2.cpthreadmutex.h[root^localhost逬桴间问步机加j]#gccmutex.c-omutex-Ipthread[root@localhost进S间冋步机釗./mutexpthreadl:pthreadllockthevariablepthread2:thevariableislockedbypthreadlpthreadl:pthreadlunlockth
5、tex_trylockM);exit(l):>elseprintf(Hpthread2:pthread2gotlock.ThevariableisW"Jock^var):if(pthread_miitex_iiniock(toutex)1=0){perror(-pthreadjnutexunlock");}elseprintf(-pthread2:pthread2unlockthevariablerH):}sleep(3);5)用gedit编写mutex.c文件,用于执行主函数,此函数主要用于互斥锁初始化,创建两个线程,设置两个线程的阻塞函7p7nrclucSec
6、stdlib.^«irclucteftrclutfe7、d•)pthredd2.*);if(retfM))perror(-MWtMl2M«>-);pthreadjoinUdl:hpthre>d2)oin(id2/):c«t(O);6)编译mutex.c文件,生成执行文件[root@localhost〜】#cd进程间同步机制/[root@localhost进程间同步机制]#gccmutex.c-omutex-Ipthread[root@IocaIhost进程间同步机制]#./mutex文件(£)级错(£>$著⑺终球(I)标签⑻Iroot@localhost*]#cd逬程间TO步机W/(root(aiocalhost进S间TO步机W】#Ismute8、x.cpthreadl.cpthread2.cpthreadmutex.h[root^localhost逬桴间问步机加j]#gccmutex.c-omutex-Ipthread[root@localhost进S间冋步机釗./mutexpthreadl:pthreadllockthevariablepthread2:thevariableislockedbypthreadlpthreadl:pthreadlunlockth
7、d•)pthredd2.*);if(retfM))perror(-MWtMl2M«>-);pthreadjoinUdl:hpthre>d2)oin(id2/):c«t(O);6)编译mutex.c文件,生成执行文件[root@localhost〜】#cd进程间同步机制/[root@localhost进程间同步机制]#gccmutex.c-omutex-Ipthread[root@IocaIhost进程间同步机制]#./mutex文件(£)级错(£>$著⑺终球(I)标签⑻Iroot@localhost*]#cd逬程间TO步机W/(root(aiocalhost进S间TO步机W】#Ismute
8、x.cpthreadl.cpthread2.cpthreadmutex.h[root^localhost逬桴间问步机加j]#gccmutex.c-omutex-Ipthread[root@localhost进S间冋步机釗./mutexpthreadl:pthreadllockthevariablepthread2:thevariableislockedbypthreadlpthreadl:pthreadlunlockth
此文档下载收益归作者所有