您的位置:首页 > 健康 > 美食 > 网站搭建完手机访问_类似pinterest的网站_社交媒体营销策略有哪些_外贸网络营销平台

网站搭建完手机访问_类似pinterest的网站_社交媒体营销策略有哪些_外贸网络营销平台

2024/12/23 2:29:56 来源:https://blog.csdn.net/weixin_52243202/article/details/143618973  浏览:    关键词:网站搭建完手机访问_类似pinterest的网站_社交媒体营销策略有哪些_外贸网络营销平台
网站搭建完手机访问_类似pinterest的网站_社交媒体营销策略有哪些_外贸网络营销平台

文章目录

    • SDL线程相关

SDL线程相关

  • SDL线程创建:SDL_CreateThread
  • SDL线程等待: SDL_WaitThread
  • SDL互斥锁 :SDL_CreateMutex/SDL_DestoryMutex
  • SDL锁定互斥: SDL_LockMutex/SDL_UnlockMutex
  • SDL条件变量:SDL_CreateCond/SDL_DestoryCond
  • SDL条件变量 等待通知: SDL_CondWait/SDL_CondSingal

#include <SDL.h>
#include <stdio.h>SDL_mutex *s_lock = NULL;
SDL_cond *s_cond = NULL;int thread_work(void *arg) {SDL_LockMutex(s_lock);printf("                <============thread_work sleep\n");sleep(10); // 用来测试获取锁printf("                <============thread_work wait\n");// 释放s_lock资源,并等待signal。之所以释放s_lock是让别的线程能够获取到s_lockSDL_CondWait(s_cond, s_lock); // 另一个线程(1)发送signal和(2)释放lock后,这个函数退出printf("                <===========thread_work receive signal, continue to do ~_~!!!\n");printf("                <===========thread_work end\n");SDL_UnlockMutex(s_lock);return 0;
}#undef main
int main() {// 锁s_lock = SDL_CreateMutex();// 条件变量s_cond = SDL_CreateCond();SDL_Thread *t = SDL_CreateThread(thread_work, "thread_work", NULL);if (!t) {printf("  %s", SDL_GetError);return -1;}for (int i = 0; i < 2; i++) {sleep(2);printf("main execute =====>\n");}printf("main SDL_LockMutex(s_lock) before ====================>\n");SDL_LockMutex(s_lock); // 获取锁,但是子线程还拿着锁printf("main ready send signal====================>\n");printf("main SDL_CondSignal(s_cond) before ====================>\n");SDL_CondSignal(s_cond); // 发送信号,唤醒等待的线程printf("main SDL_CondSignal(s_cond) after ====================>\n");sleep(10);SDL_UnlockMutex(s_lock); // 释放锁,让其他线程可以拿到锁printf("main SDL_UnlockMutex(s_lock) after ====================>\n");SDL_WaitThread(t, NULL);SDL_DestroyMutex(s_lock);SDL_DestroyCond(s_cond);return 0;
}

在这里插入图片描述

这里面的信号量什么的 和 规范的那一套逻辑设计的是一样的
之前学过线程信号量相关的知识 在这里也是更换了一下函数

代码的主要逻辑是
创建子线程 子线程先拿到锁 休眠10s后 释放锁并等待信号量
主线程拿到锁 发送信号量 唤醒子线程 休眠10s后 释放锁
子线程拿到锁 输出文本并释放锁
主线程等待子线程结束后 结束流程

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com