操作系统多线程并发实验心得
一、实验背景和目的
操作系统是计算机系统中最基础的软件之一,它负责管理计算机硬件资源,为应用程序提供必要的服务。多线程并发是操作系统中一个重要的概念,它能够提高计算机系统的效率和性能。本次实验旨在通过编写多线程并发程序,加深对操作系统多线程并发原理的理解,并掌握相关技术。
二、实验环境和工具
本次实验使用的操作系统是 Windows 10,开发工具是 Visual Studio 2019。
三、实验内容和步骤
1. 实验一:创建多线程并发程序
首先,我们需要创建一个多线程并发程序。具体步骤如下:
(1)打开 Visual Studio 2019,选择“新建项目”,选择“Windows 控制台应用程序”。
(2)在“解决方案资源管理器”中右键单击“源文件”,选择“添加” -> “新建项”,创建一个名为“MultiThread.cpp”的源文件。
(3)在 MultiThread.cpp 中编写代码。代码如下:
#include <iostream>
#include <thread>
#include <chrono>
using namespace std;
void threadFunc(int id)
{
    for (int i = 0; i < 5; i++)
    {
        cout << "Thread " << id << " " << endl;
        this_thread::sleep_for(chrono::seconds(1));
    }
}
int main()
{
    thread t1(threadFunc, 1);
    thread t2(threadFunc, 2);
    t1.join();
    t2.join();
thread技术    return 0;
}
(4)编译并运行程序。可以看到两个线程交替执行,每个线程输出五次。
2. 实验二:使用互斥锁保护共享资源
在多线程并发程序中,如果多个线程同时访问同一个共享资源,就会出现数据竞争的问题。为了避免这种情况,我们需要使用互斥锁来保护共享资源。具体步骤如下:
(1)修改 MultiThread.cpp 中的代码,在 threadFunc 函数中添加互斥锁。
#include <iostream>
#include <thread>
#include <chrono>
#include <mutex>
using namespace std;
mutex mtx;
void threadFunc(int id)
{
    for (int i = 0; i < 5; i++)
    {
        mtx.lock();
        cout << "Thread " << id << " " << endl;
        mtx.unlock();
        this_thread::sleep_for(chrono::seconds(1));
    }
}
int main()
{
    thread t1(threadFunc, 1);
    thread t2(threadFunc, 2);
    t1.join();
    t2.join();
    return 0;
}
(2)编译并运行程序。可以看到两个线程交替执行,并且输出的结果不会出现混乱。
3. 实验三:使用条件变量实现线程同步
除了互斥锁之外,还有一种常用的同步机制是条件变量。条件变量可以让线程在特定条件下等待,直到其他线程发出通知。具体步骤如下:
(1)修改 MultiThread.cpp 中的代码,在 threadFunc 函数中添加条件变量。
#include <iostream>
#include <thread>
#include <chrono>
#include <mutex>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。