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

  • 相关阅读:
    Hadoop启动报Error: JAVA_HOME is not set and could not be found
    mrjob在hadoop上跑的时候,报错
    Hadoop3安装踩坑 there is no HDFS_NAMENODE_USER defined. Aborting operation.
    mrjob 运行报错
    站位

    Lua基本数据类型
    常量指针和指针常量
    C基础题
    C++拷贝构造函数(深拷贝,浅拷贝)
  • 原文地址:https://www.cnblogs.com/gghost/p/3326687.html
Copyright © 2011-2022 走看看