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 可精确到纳秒。

  • 相关阅读:
    Java 入门后需要学习的一些知识点
    C#重载实例构造函数与构造函数初始化器(转)
    沪江小D每日一句一周详解 2228
    面向对象设计的原则之“合成/聚合复用原则” (转)
    C#事件(event)解析 (转)
    AjaxControlToolkit AutoCompleteExtender实例应用
    asp.net 返回电脑真实IP地址
    asp.net 返回当前是今年第几周
    (转)GridView固定表头
    asp.net 返回当前日期
  • 原文地址:https://www.cnblogs.com/gghost/p/3326687.html
Copyright © 2011-2022 走看看