zoukankan      html  css  js  c++  java
  • linux 互斥锁之trylock的简单测试

    /* ************************************************************************
    * Filename: n_trylock.c
    * Description:
    * Version: 1.0
    * Created: 2011骞?4鏈?2鏃?20鏃?9鍒?2绉?
    * Revision: none
    * Compiler: gcc
    * Author: wenhao (wh), hnrain1004@gmail.com
    * Company: sunplusapp
    * ***********************************************************************
    */


    #include
    <stdio.h>
    #include
    <pthread.h>
    #include
    <errno.h>
    pthread_mutex_t mutex;

    void *thread_a(void *arg)
    {
    printf(
    "thread a enter\n");
    pthread_mutex_lock(
    &mutex);
    printf(
    "mutex a lock\n");
    sleep(
    6);
    pthread_mutex_unlock(
    &mutex);
    printf(
    "mutex a unlock\n");
    }

    void *thread_b(void *arg)
    {
    printf(
    "thread b enter\n");
    #if 1
    pthread_mutex_trylock(
    &mutex);
    #else
    while(pthread_mutex_trylock(&mutex)==EBUSY)
    {
    printf(
    "pthread b trylock\n");
    sleep(
    1);
    }
    #endif
    printf(
    "mutex b lock\n");
    pthread_mutex_unlock(
    &mutex);
    printf(
    "mutex b unlock\n");
    }

    int main(int argc,char **argv)
    {
    pthread_t tid_a,tid_b;
    int err;

    if(pthread_mutex_init(&mutex,NULL) != 0)
    {
    perror(
    "pthread_mutex_init");

    }

    err
    = pthread_create(&tid_a,NULL,thread_a,NULL);
    if(err != 0)
    {
    perror(
    "pthread_create thread_a");
    }

    sleep(
    1);
    err
    = pthread_create(&tid_b,NULL,thread_b,NULL);
    if(err < 0)
    {
    perror(
    "pthread_create thread_b");
    }
    sleep(
    10);

    printf(
    "the main close\n");

    return 0;
    }
  • 相关阅读:
    插入排序
    2019何凯文五夜十篇
    文件
    结构体数组表示
    位运算应用
    条件编译 预处理命令
    文件包含
    带参宏定义
    宏定义有无参数宏定义和带参数宏定义两种
    phpcms v9网站搬家更换域名的方法
  • 原文地址:https://www.cnblogs.com/hnrainll/p/2033855.html
Copyright © 2011-2022 走看看