"Linux进程与线程实验报告" 本实验报告旨在探讨 Linux 进程和线程的概念及实现,通过实验,深入了解进程和线程的异步执行、打印顺序不定的原因,以及进程和线程的控制函数。 一、进程控制函数 fork 函数是创建子进程的函数,该函数调用一次,却返回两次,会有三种返回值: * 在父进程中,fork 返回新创建的子进程的 ID * 在子进程中,fork 返回 0 * 如果出现错误,fork 返回一个负值 wait 和 waitpid 函数是等待子进程返回的函数: * wait 函数阻塞等待一个子进程退出,返回该子进程的 ID,status 保存该进程退出的状态 * waitpid 函数阻塞(或不阻塞,通过 options 设置)等待一个子进程退出,返回结束子进程 ID 在父进程中先创建了儿子进程,又创建了女儿进程,再加上本来的父进程,总共有三个进程。这三个进程都要执行打印到屏幕的操作,但屏幕只有一个,所以这三个进程会进行竞争,谁抢到了谁就先把自己的信息打印到屏幕上。 二、线程控制函数 pthread_create 函数是创建线程的函数,返回值为成功返回 0,出错返回-1。tid 是返回线程标识符,attr 是线程属性设置,start_routine 是线程函数指针,arg 是传递给 start_routine 的参数。 pthread_join 函数是阻塞等待 tid 结束,tret 是线程返回的值。如果没有该函数,当主线程结束时,其他线程也会结束,加入该函数时,可以使主程序阻塞,直到所有程序都已经退出。 在线程中,count 变量的值是异步并发执行的结果,每个线程都执行自己的 count 变量操作,但 count 变量的值却是共享的,因为线程共享所在进程的地址空间和全部资源。 三、对程序、进程、线程的理解 程序是静态概念,保存在磁盘当中,是固定不变的。进程是计算机中的程序关于某数据集合上的一次运行活动,是系统中独立存在的实体,可以拥有自己独立的资源,每个进程都拥有自己私有的地址空间,在没有经过进程本身允许的情况下,一个用户进程不可以直接访问其他进程的地址空间。 线程是进程中的一种执行单元,每个线程都共享所在进程的地址空间和全部资源,但线程间都相互独立的并发执行。线程异步并发执行中,count 变量的值是共享的,但每个线程都执行自己的 count 变量操作。 通过实验,我们可以深入了解进程和线程的异步执行、打印顺序不定的原因,以及进程和线程的控制函数,理解程序、进程、线程的概念和区别。
- 粉丝: 1
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助