C++ 多线程打印奇偶数

写在前面: 我是「虐猫人薛定谔i」,一个不满足于现状,有梦想,有追求的00后
\quad
本博客主要记录和分享自己毕生所学的知识,欢迎关注,第一时间获取更新。
\quad
不忘初心,方得始终。
\quad

❤❤❤❤❤❤❤❤❤❤

任务描述

输入一个整数n,打印区间[0, n]之间的奇数和偶数。

代码

(一)、不使用多线程

#include 
#include 
#include 
using namespace std;

// 打印奇数
void printOdd(int n)
{
    for (int i = 1; i <= n; i+=2)
    {
        cout << "Task1:\t" << i << endl;
        Sleep(20);
    }
}
// 打印偶数
void printEven(int n)
{
    for (int i = 0; i <= n; i+=2)
    {
        cout << "Task2:\t" << i << endl;
        Sleep(30);
    }
}


int main()
{
    int n;
    cin >> n;
    time_t start, stop;
    start = time(NULL);
    printOdd(n);
    printEven(n);
    stop = time(NULL);
    cout << "任务完成!\n耗时:"<< (stop-start) << endl;
    return 0;
}

C++ 多线程打印奇偶数_第1张图片

(二)、使用多线程

#include 
#include 
#include 
#include 

using namespace std;

// 打印奇数
void printOdd(int n)
{
    for (int i = 1; i <= n; i+=2)
    {
        cout << "Task1:\t" << i << endl;
        Sleep(20);
    }
}
// 打印偶数
void printEven(int n)
{
    for (int i = 0; i <= n; i+=2)
    {
        cout << "Task2:\t" << i << endl;
        Sleep(30);
    }
}


int main()
{
    int n;
    cin >> n;
    time_t start, stop;
    start = time(NULL);
    thread t1(printOdd, n);
    thread t2(printEven, n);
    t1.join();
    t2.join();
    stop = time(NULL);
    cout << "任务完成!\n耗时:"<< (stop-start) << endl;
    return 0;
}

C++ 多线程打印奇偶数_第2张图片

效果对比

对两个程序输入相同的n(这里的n=1000),分别进行如下的测试。
首先,我们测试不使用多线程版本的。
C++ 多线程打印奇偶数_第3张图片
最后,我们再测一下使用多线程后的效果。
C++ 多线程打印奇偶数_第4张图片

蒟蒻写博客不易,加之本人水平有限,写作仓促,错误和不足之处在所难免,谨请读者和各位大佬们批评指正。
如需转载,请署名作者并附上原文链接,蒟蒻非常感激
名称:虐猫人薛定谔i
博客地址:https://blog.csdn.net/Deep___Learning

你可能感兴趣的:(C/C++)