C++多线程交替打印数字(奇数偶数)

 多线程交替打印1,2,3...10

使用互斥锁实现

#include 
#include 
#include 
using namespace std;

mutex my_mutx;
const int max_num = 10;
int num;
int num2;

//使用锁交替打印-----begin
void threadfuncjishu()
{
    while (1) {
        my_mutx.lock();
        if (num >= max_num)
        {
            my_mutx.unlock();
            break;
        }

        if (num %2 == 0)
        {
            num += 1;
            std::cout << "threadfuncjishu打印:" << num << std::endl;
        }
        my_mutx.unlock();
    }

}

void threadfuncOuShu()
{
    while (1) {
        my_mutx.lock();
        if (num >= max_num)
        {
            my_mutx.unlock();
            break;
        }
        if (num % 2 == 1)
        {
            num += 1;
            std::cout << "threadfuncOuShu打印:" << num << std::endl;
        }
        my_mutx.unlock();
    }
}
//使用锁交替打印-----end


//使用计数控制交替打印----begin
void print_jishu()
{
    while (1) {
        if (num2 %2==1)
        {
            cout << "print_jishu打印:" << num2 << std::endl;
            num2++;
        }
        if (num2 > max_num)
        {
            break;
        }
    }
}

void print_oushu()
{
    while (1) {
        if (num2 % 2 == 0)
        {
            cout << "print_oushu打印:" << num2 << std::endl;
            num2++;
        }
        if (num2 > max_num)
        {
            break;
        }
    }
}
//使用计数控制交替打印----end

int main()
{
    //使用互斥锁
    num = 0;
    thread ll(threadfuncjishu);
    thread ll2(threadfuncOuShu);

    ll.join();
    ll2.join();

    //使用计数控制
    num2 = 1;
    thread ll1(print_jishu);
    thread ll12(print_oushu);

    ll1.join();
    ll12.join();
}

运行结果如下:

C++多线程交替打印数字(奇数偶数)_第1张图片

 

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