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

  • 相关阅读:
    c标签页面进行解析json
    Android 简述touch事件中的MotionEvent
    R中读取文件,找不到路径问题 No such file or directory
    文章标题
    Codeforces Beta Round #2 C. Commentator problem
    openfire 开发遇到的些问题
    BZOJ 刷题记录 PART 5
    公司又裁人了……
    最简单的基于FFmpeg的移动端样例:Android 视频转码器
    单片机: 简易计算器的实现(键盘)
  • 原文地址:https://www.cnblogs.com/gghost/p/3326687.html
Copyright © 2011-2022 走看看