该实验内容较为简单,基于老师提供的代码敲一遍即可,可分为如下步骤:
- 码代码
- 编写脚本文件以便多次运行
- 编译,使用
bash test.sh
运行脚本文件,观察记录实验结果 - 将父进程中的
wait(NULL);
语句删去 - 编译,使用
bash test.sh
运行脚本文件,观察记录实验结果,并与3.
中实验结果进行比较
该实验内容同样较为简单,基于老师提供的代码敲一边即可,可分为如下步骤:
- 码代码
- 编写脚本文件以便多次运行
- 编译,使用
bash test.sh
运行脚本文件,观察记录实验结果 - 将父进程中的
wait(NULL);
语句删去 - 编译,使用
bash test.sh
运行脚本文件,观察记录实验结果,并与3.
中实验结果进行比较
此实验内容考察对pthread
库中的pthread_join(tid, NULL)
函数的灵活运用,基于老师提供的代码敲一边,并按照如下步骤修改即可:
- 码代码
- 这里我沿用了老师单参数的
runner(void* param)
函数,所以特意构建了一个结构体,将信息打包起来传入函数内部 - 结构体定义如下
typedef struct ARGV
{
char* a;// 从控制台传入的参数信息
pthread_t b;// 另外一个线程的`tid`
}ARGV;
- 在创建子进程1之后,将相应信息赋值给结构体
- 在创建子进程2时,将结构体作为参数传入
- 在
runner02(void* param)
使用函数pthread_join(tid, NULL)
进行绑定即可 - 编译运行
gcc -o t thread.c -lpthread
,记录实验结果与不做绑定的运行结果进行比较