linux进程线程管理实验报告(7)
时间:2025-07-09
时间:2025-07-09
进程线程,死锁实验报告
果不可预料,当然counter[i]值不会一定相等。而我认为main_counter与sum值应该是相等的。因为都是三个线程的counter之和。
2.而实验结果是前三列数确实不相等。不过main_counter与sum的值也不相等,main_counter < sum,经分析讨论得出解释:因为三个线程在共同争取运行thread_worker()函数,比如main_counter初值为0,pthread_id[0]执行之后main_counter+1,此时还未来得及将值赋给main_counter,这时的main_counter还是0;pthread_id[1]也执行这个函数,main_counter+1,若此时在1号线程将main_counter+1的值还未赋给main_counter,即这时的main_counter还是0,pthread_id[2]也来执行这个函数,main_counter+1,此时三个线程才将加完之后的值赋给main_counter,则main_counter=0+1=1,而真正执行次数sum=0+1+1+1=3。main_counter < sum。
3.thread的CPU占用率在我的机子上执行结果是181,因为三个线程是无限循环的运行,使得cpu占用率很高。
4.thread_worker()函数内是死循环,退出时因为主函数中设置的输入q时循环退出。输入q时主进程执行退出,return 退出程序,则子线程也强制退出。 这样退出不好。
实验三: 互斥
一. 实验目的
通过观察、分析实验现象,深入理解理解互斥锁的原理及特点
掌握在POSIX 规范中的互斥函数的功能及使用方法
二.实验要求
2.1 实验环境要求
1. 硬件
(1) 主机:Pentium III 以上;
(2) 内存:128MB 以上;
(3) 显示器:VGA 或更高;
(4) 硬盘空间:至少100MB 以上剩余空间。
2. 软件
Linux 操作系统,内核2.4.26 以上,预装有X-Window 、vi、gcc、gdb 和任 意web 浏览器。
2.2 实验前的准备工作
准备好上节实验完成的程序thread.c 。
阅读参考资料,了解互斥锁的加解锁机制及相关的系统调用。
三、实验内容
上一篇:数学教案第一周