使用互斥量实现多线程交替打印helloworld

Posted burgess-fan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用互斥量实现多线程交替打印helloworld相关的知识,希望对你有一定的参考价值。

/*===============================================================
*  Copyright(C) 2020 Burgess Fan aLL rights reserved.
*  
*  文件名称:mutex.c
*   创 建 者:Burgess
*   创建日期:2020年05月10日
================================================================*/
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
#include <stdlib.h>

pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;
int sum=0;

void* thr1(void *arg)
{
    while(1)
    {
        pthread_mutex_lock(&mutex);//加锁
        printf("I am thread No1,hello world!
");
        sleep(1);
        pthread_mutex_unlock(&mutex);//释放锁
        sleep(1);//增加睡眠时间确保不会让线程本身抢到锁
    }
}

void* thr2(void *arg)
{
    while(1)
    {
        pthread_mutex_lock(&mutex);
        printf("I am thread No2,HELLO  WORLD!
");
        sleep(1);
        pthread_mutex_unlock(&mutex);
        sleep(1);
    }
}

int main()
{
    pthread_t tid[2];
    pthread_create(&tid[0],NULL,thr1,NULL);
    pthread_create(&tid[1],NULL,thr2,NULL);
    pthread_join(tid[0],NULL);
    pthread_join(tid[1],NULL);
    return 0;
}

技术图片

 

以上是关于使用互斥量实现多线程交替打印helloworld的主要内容,如果未能解决你的问题,请参考以下文章

交替打印ABC多线程(互斥量+条件变量)

交替打印ABC多线程(互斥量+条件变量)

java多线程 更优雅的实现线程同步:交替打印AB LockSupport实现

多线程交替打印ABC的多种实现方法

多线程交替打印ABC的多种实现方法

linux多线程——互斥量实现同步