码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 简单讲解SDL 互斥锁和信号量


    为了便于理解直接给例子去讲解

    
    SDL_bool condition = SDL_FALSE;
    SDL_mutex *lock;
    SDL_cond *cond;
    
    lock = SDL_CreateMutex();
    cond = SDL_CreateCond();
    .
    .
    Thread A:
    SDL_LockMutex(lock);
    while (!condition) {
    SDL_CondWait(cond, lock);
    }
    SDL_UnlockMutex(lock);
    
    Thread B:
    SDL_LockMutex(lock);
    condition = SDL_TRUE;
    SDL_CondSignal(cond);
    SDL_UnlockMutex(lock);
    .
    .
    SDL_DestroyCond(cond);
    SDL_DestroyMutex(lock)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    线程A首先上锁(通过调用SDL_LockMutex(lock)),然后进入一个循环,不断检查条件是否满足。如果条件不满足,它会调用SDL_CondWait(cond, lock)来等待条件变量,同时释放对互斥锁的控制,以便其他线程能够操作共享资源。一旦条件满足,线程A会解锁互斥锁(通过调用SDL_UnlockMutex(lock))。

    线程B首先上锁,然后执行一些操作。在某个时刻,它设置条件为真,然后通过调用SDL_CondSignal(cond)发送条件变量信号,通知等待中的线程A条件已经满足,可以继续执行。最后,线程B解锁互斥锁。

    整个过程中,线程A等待条件变量的改变,线程B负责改变条件并通知线程A。通过互斥锁的上锁和解锁操作,确保了在操作共享资源时的线程安全性。最后,使用完互斥锁和条件变量后,需要销毁它们以释放资源。
    总的来说SDL的互斥锁与thread的互斥锁基本相同,但是通过SDL的信号量,可以将互斥锁进行释放,进行其他配置。

  • 相关阅读:
    前端 JS 经典:typeof 和 instanceof 区别
    运算符、流程控制
    LoRa知识点记录
    图片像素缩放,支持个性化自定义与精准比例调整,让图像处理更轻松便捷!
    OpenCV 透视变换
    vue2和vue3的区别
    Dijkstra算法详解
    wangeditor 编辑器图片上传遇到的问题: u.upload.addEventListener is not a function
    【无标题】
    Python GUI编程之PyQt5入门到实战
  • 原文地址:https://blog.csdn.net/matewang/article/details/138922711
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号