zoukankan      html  css  js  c++  java
  • Linux 线程编程

    image

    image

    image

    image

    image

    image

    image
    image

    互斥锁

    用简单的加锁方法控制对共享资源的原子操作

    只有两种状态: 上锁、解锁

    可把互斥锁看作某种意义上的全局变量

    在同一时刻只能有一个线程掌握某个互斥锁,拥有上锁状态的线程能够对共享资源进行操作

    若其他线程希望上锁一个已经被上锁的互斥锁,则该线程就会挂起,直到上锁的线程释放掉互斥锁为止

    互斥锁保证让每个线程对共享资源按顺序进行原子操作

    互斥锁分类

    区别在于其他未占有互斥锁的线程在希望得到互斥锁时是否需要阻塞等待

    快速互斥锁

    •调用线程会阻塞直至拥有互斥锁的线程解锁为止

    •默认为快速互斥锁

    检错互斥锁

    •为快速互斥锁的非阻塞版本,它会立即返回并返回一个错误信息

    image

    image

    线程创建到执行,是有时间的。

    image

    pthread_cond_t使用

    1)需要配合mutex使用

    pthread_cond_wait(&cond,&mutex)

    1.解锁,挂起,等待条件;

    pthread_cond_signal(&cond)

    2.解锁,发送信号

    pthread_cond_wait(&cond,&mutex)

    3.上锁,向下执行

    2)使用超时条件

    struct timespec tv;

    tv.tv_sec = time(0) + 1;

    tv.tv_nsec = 0;

    ret = pthread_cond_timedwait( &g_cond , &g_mtx ,&tv );

    指定超时结构体timespec,注意超时时间是当前时间,所以要设定为time(0) + N秒。timespec 可精确到纳秒。

  • 相关阅读:
    Spring Boot实战二:集成Mybatis
    Spring Boot实战一:搭建Spring Boot开发环境
    Oracle 11g安装和PL/SQL连接完全解读(连接本地数据库)
    Spring事务详解
    RabbitMQ学习笔记六:RabbitMQ之消息确认
    RabbitMQ学习笔记五:RabbitMQ之优先级消息队列
    RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决)
    RabbitMQ学习笔记三:Java实现RabbitMQ之与Spring集成
    RabbitMQ学习笔记二:Java实现RabbitMQ
    Spark 读 Hive(不在一个 yarn 集群)
  • 原文地址:https://www.cnblogs.com/gghost/p/3326687.html
Copyright © 2011-2022 走看看