最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

C++死锁与哲学家就餐问题

业界 admin 4浏览 0评论

“操作系统”专栏内含课设报告+实验报告+期末复习整理   C++存储管理算法设计之【内存空间的分配和回收】

博客总领目录请看这篇,不看后悔

软件工程专业大学四年学什么_大学近代史学分是多少-CSDN博客https://blog.csdn/qq_41587612/article/details/104362661B站同名up猪,欢迎关注我的账号鸽子不二的个人空间-鸽子不二个人主页-哔哩哔哩视频哔哩哔哩鸽子不二的个人空间,提供鸽子不二分享的视频、音频、文章、动态、收藏等内容,关注鸽子不二账号,第一时间了解UP主动态。https://space.bilibili/204913846

设计一  采用预先分配法预防死锁的哲学家就餐问题

1. 实验目的

       理解死锁的概念,掌握死锁预防方法。

        死锁是进程并发执行过程中可能出现的现象,哲学家就餐问题是描述死锁的经典例子。为了防止死锁,可以采用资源预先分配法。资源预先分配法是指进程在运行前一次性地向系统申请它所需要的全部资源,如果系统当前不能够满足进程的全部资源请求,则不分配资源, 此进程暂不投入运行,如果系统当前能够满足进程的全部资源请求, 则一次性地将所申请的资源全部分配给申请进程。在哲学家就餐问题中,要采用资源预先分配法只需让每个哲学家同时申请左右两根筷子。

2. 实验要求

        利用多线程技术编写哲学家就餐程序,演示采用死锁防止方法后不产生死锁的情况。

3. 实验步骤

3.1 程序结构设计

       程序需要六个线程,主线程用于显示功能描述;五个哲学家线程用于模拟哲学家的活动,即不停地思考、饥饿、进食。相邻的两个哲学家线程需要共享他们中间的同一根筷子,因此对每一根筷子的使用要互斥,用互斥体数组h_mutex_chopsticks来实现。主线程创建五个哲学家线程后要等待所有哲学家结束,用线程句柄数组h_thread来表示五个线程,主线程通过等待这五个线程句柄来实现同步。

      该程序共有7个函数,这些函数可以分成4组。各组包含的函数及其功能如图4-1所示。

组别

包括函数

函数功能

main()

显示主菜单,接收用户的选择并执行相应的功能。

deadlock_philosopher()

deadlock()

演示死锁情况的哲学家线程函数

初始化函数:创建五个哲学家并等待它们结束

ordered_allocation_philosopher()

ordered_allocation()

“操作系统”专栏内含课设报告+实验报告+期末复习整理   C++存储管理算法设计之【内存空间的分配和回收】

博客总领目录请看这篇,不看后悔

软件工程专业大学四年学什么_大学近代史学分是多少-CSDN博客https://blog.csdn/qq_41587612/article/details/104362661B站同名up猪,欢迎关注我的账号鸽子不二的个人空间-鸽子不二个人主页-哔哩哔哩视频哔哩哔哩鸽子不二的个人空间,提供鸽子不二分享的视频、音频、文章、动态、收藏等内容,关注鸽子不二账号,第一时间了解UP主动态。https://space.bilibili/204913846

设计一  采用预先分配法预防死锁的哲学家就餐问题

1. 实验目的

       理解死锁的概念,掌握死锁预防方法。

        死锁是进程并发执行过程中可能出现的现象,哲学家就餐问题是描述死锁的经典例子。为了防止死锁,可以采用资源预先分配法。资源预先分配法是指进程在运行前一次性地向系统申请它所需要的全部资源,如果系统当前不能够满足进程的全部资源请求,则不分配资源, 此进程暂不投入运行,如果系统当前能够满足进程的全部资源请求, 则一次性地将所申请的资源全部分配给申请进程。在哲学家就餐问题中,要采用资源预先分配法只需让每个哲学家同时申请左右两根筷子。

2. 实验要求

        利用多线程技术编写哲学家就餐程序,演示采用死锁防止方法后不产生死锁的情况。

3. 实验步骤

3.1 程序结构设计

       程序需要六个线程,主线程用于显示功能描述;五个哲学家线程用于模拟哲学家的活动,即不停地思考、饥饿、进食。相邻的两个哲学家线程需要共享他们中间的同一根筷子,因此对每一根筷子的使用要互斥,用互斥体数组h_mutex_chopsticks来实现。主线程创建五个哲学家线程后要等待所有哲学家结束,用线程句柄数组h_thread来表示五个线程,主线程通过等待这五个线程句柄来实现同步。

      该程序共有7个函数,这些函数可以分成4组。各组包含的函数及其功能如图4-1所示。

组别

包括函数

函数功能

main()

显示主菜单,接收用户的选择并执行相应的功能。

deadlock_philosopher()

deadlock()

演示死锁情况的哲学家线程函数

初始化函数:创建五个哲学家并等待它们结束

ordered_allocation_philosopher()

ordered_allocation()

发布评论

评论列表 (0)

  1. 暂无评论