资源简介
根据题目中描述的助教和学生的行为 需要两类线程 program 和student 其中 助教的活动有编程和睡觉两个事件 学生有等待和编程两个事件 走廊上有三个椅子 上面坐着等待的学生 学生到后 需判断有没有空闲的椅子 助教决定要教学或睡觉时 也要判断椅子上有没有学生 所以助教和学生之间的关系表现为:
(1)助教和学生之间的同步关系:当助教睡觉时 学生进来需要唤醒助教 当有学生时 助教教其编程 没有的时候助教睡觉
(2)助教和学生之间的互斥关系:由于每次助教只能帮一个学生 且可供等待的椅子只有3把 即助教和椅子是临界资源 所以学生之间是互斥关系
(3)引入三个信号量和一个控制变量:
控制变量waiting用来记录等待的学生数 初值为0;
信号量students用来表示等待的学生 初值为0;
信号量ta用来表示助教 初值为1;
信号量mutex用于互斥 初值为1;">根据题目中描述的助教和学生的行为 需要两类线程 program 和student 其中 助教的活动有编程和睡觉两个事件 学生有等待和编程两个事件 走廊上有三个椅子 上面坐着等待的学生 学生到后 需判断有没有空闲的椅子 [更多]
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#define n 3
sem_t mutexstudentsta;
int waiting=0;
int chair[3];
void * program();
void * student(void *arg);
int main(int argcchar *argv[])
{
pthread_t student_id[10]ta_id;
int i;
sem_init(&mutex01);
sem_init(&students00);
sem_init(&ta01);
pthread_create(&ta_idNULL(void*)programNULL);
for(i=0;i<20;i++){
sleep(2);
pthread_create(&student_id[i]NULL(void*)student(void*)(i+1));
}
for (i=0;i<20;i++)
pthread_join(student_id[i]NULL);
pthread_join(ta_idNULL);
return 0;
}
void * program()
{
int
- 上一篇:Linux下线性和DFS遍历进程树 内核模块
- 下一篇:DSP算法实验大作业
相关资源
- Linux下线性和DFS遍历进程树 内核模块
- Qt界面多线程opencv调用摄像头
- SAP JCo3在Linux下安装及连接
- 安装过Windows系统的电脑如何安装Lin
- 简单的网络嗅探器Linux 源码
- 智慧大棚QT界面设计
- linux内核 0.11版本源码 带中文注释
- cudnn-11.1-linux-x64-v8.0.4.30.tgzab
- Linux C程序设计王者归来_book_cd.7z.004
- 鸟哥的Linux私房菜:服务器架设篇第
- 《Linux-UNIX系统编程手册 上、下册 全
- linux学习资料(收集了很久)
- 多线程获取kinect2.0 视频并保存身体点
- 程序的链接和装入
- 实验四:实现一个unix命令解释程序代
-
gsnap.tar.gz linux从fr
amebuffer获取image源 - i2c_ioctl详解
- Linux网络编程超级详细笔记
- linux tftp rpm软件包
- Socket和多线程的聊天室
- libssl-dev库
- 基于video4linux2的双usb摄像头图像获取
- linux网络编程教学视频
- Linux下聊天系统
- linux压力测试工具stress
- 国密SM4算法ECB CBC源码及demoLinux C版
- linux基础教程.pdf
- LINUX下传输文件源码
- 基于Linux的消息队列及多线程编程实现
- Linux操作系统实验教程源码.zip
评论
共有 条评论