互斥锁练习





#include <assert.h>

#include <errno.h>

#include <stdio.h>

#include <stdlib.h>

#include <time.h>



#include <pthread.h>



#define __FUNC__ __func__



pthread_mutex_t hMutex = PTHREAD_MUTEX_INITIALIZER;

void *

threadFunc1(void *arg)

{



        while(1)

        {

                pthread_mutex_lock(&hMutex);

                sleep(10);

                (void)printf("%s:%d:%s\n", __FILE__, __LINE__, __FUNC__);

                pthread_mutex_unlock(&hMutex);

                pthread_yield();

        }

        return 0;

}



void *

threadFunc2(void *arg)

{



        while(1)

        {

                pthread_mutex_lock(&hMutex);

                sleep(5);

                (void)printf("%s:%d:%s\n", __FILE__, __LINE__, __FUNC__);

                pthread_mutex_unlock(&hMutex);

                pthread_yield();

        }

        return 0;

}

int main(void)

{

        pthread_t tid1, tid2;



        pthread_setconcurrency(3);

        pthread_create(&tid1, NULL, threadFunc1, NULL);

        pthread_create(&tid2, NULL, threadFunc2, NULL);



        pause();

        return 0;

} 

用pthread_yield();
函数实现让出 线程控制权;也可以用nanosleep来代替sleep 减小休眠时间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值