嵌入式学习——进线程(互斥锁和同步)——day26

1. 两个线程进行售票处理,售票一百张

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>pthread_mutex_t mutex;
int tick =100;void * th(void* arg)
{while(1){pthread_mutex_lock(&mutex);if(tick>0){printf("%s tick:%d\n", (char*)arg,tick-- );pthread_mutex_unlock(&mutex);usleep(1000*100);}else {pthread_mutex_unlock(&mutex);break;}}return NULL;
}
int main(int argc, char *argv[])
{pthread_t tid1,tid2;pthread_mutex_init(&mutex,NULL);pthread_create(&tid1,NULL,th,"WIN1");pthread_create(&tid2,NULL,th,"WIN2");pthread_join(tid1,NULL);pthread_join(tid2,NULL);pthread_mutex_destroy(&mutex);return 0;
}

2. 对资源的获取和释放

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#include <semaphore.h>
sem_t sem_MEM;
int mem[3]={0};
int get_mem()
{sem_wait(&sem_MEM);int i = 0 ;for(i = 0 ;i<3;i++){if(0 == mem[i]){mem[i] = 1;break;}}return i;
}
void relese_mem(int id)
{mem[id] = 0 ;sem_post(&sem_MEM);
}
void* th(void* arg)
{int id = get_mem();printf("get mem ,tid:%lu ,mem:%d\n" ,pthread_self(),id);sleep(rand()%5 +1);printf("relese mem,tid:%lu mem:%d\n",pthread_self(),id);relese_mem(id);return NULL;}
int main(int argc, char *argv[])
{int i = 0 ;pthread_t tid[10]={0};sem_init(&sem_MEM,0,3);for(i = 0 ;i<10;i++){pthread_create(&tid[i],NULL,th,NULL);}for(i=0;i<10;i++){pthread_join(tid[i],NULL);}sem_destroy(&sem_MEM);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/16947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【制作100个unity游戏之26】unity2d横版卷轴动作类游13(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言存储点灯光后处理存储位置信息存储更多数据存储场景信息持久化存储数据引入Unity 的可序列化字典类调用 游戏结束源码完结 前言 欢迎来到【制作100个Unity游戏】系列&#xff01;本系列将引导您一步步学习如何使用Unity开发各…

拆分字段——kettle开发11

一、拆分字段 1、拆分字段就是将一个字段拆分为多个字段&#xff0c;原字段就不存在数据流之中&#xff0c;拆分的规则是按照一个的分隔符进行拆分。具体语法如下图所示。 2、实操将EXCEL中name拆分为firstname 和 lastname,具体转换包括EXCEL输入、拆分字段、EXCEL输出。 EXC…

《软件方法(下)》8.3.4.5和《设计模式》中用语的区别

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 8.3 建模步骤C-2 识别类的关系 8.3.4 识别关联关系 8.3.4.4 类关系再整理 有了前面的知识&#xff0c;我们需要再整理一下类的关系。用类图表示类的关系如图8-134。 图8-134 “类的…

音响上的蓝牙与AUX与mic输入原来可以利用来多台电脑用一个播放器mic可以直接接3.5音频输入

一台电脑连接了音响的蓝牙或者AUX&#xff0c;一台连接了音响的mic输入&#xff0c;mic可以直接接3.5音频输入, 音响就同时播放着两个电脑的声音&#xff0c;真是太好玩了。才发现节省一台音响的钱&#xff0c;哈哈哈哈。

如何进行硬件监控

在复杂的技术环境中&#xff0c;人们很容易忘记硬件资源的重要性&#xff0c;IT 行业的爆炸性增长使得监控各种硬件资源变得越来越重要&#xff0c;在处理运行关键业务应用程序并在日常基础上启用全局操作的大型网络时&#xff0c;保护这些网络环境的基本构建块至关重要。硬件监…

css渐变背景色和渐变边框的设置

渐变背景色 要创建渐变背景色&#xff0c;可以使用background-image属性并结合使用渐变函数。有两种常见的渐变函数&#xff1a;linear-gradient()和radial-gradient()。 使用linear-gradient()创建水平或垂直线性渐变背景色&#xff1a; .gradient-bg {background-image: li…

授人以渔 选购篇十三:前置过滤器选购要点

文章目录 系列文章水流量&#xff1a;4T以上过滤精度&#xff1a;40微米冲洗方式&#xff1a;反冲洗多重冲洗手段材质&#xff1a;316不锈钢滤网无铅铜品牌其他 系列文章 授人以渔 选购篇一&#xff1a;信用卡选购要点 授人以渔 选购篇二&#xff1a;冰箱选购要点 授人以渔 选…

苗情灾情监控系统—提高农业生产效率

TH-MQ2苗情灾情监控系统是一种用于监测农作物生长状况和灾情的设备&#xff0c;通过实时监测和数据分析&#xff0c;帮助农民及时了解作物生长情况&#xff0c;采取相应的管理措施&#xff0c;提高农业生产效率和降低生产成本。 该系统通常由多种传感器、摄像头、数据传输模块等…

IDEA软件和插件安装

安装IDEA版本&#xff1a;IDEA windows 2021.1.3 使用该版本的IDEA&#xff0c;并且安装下面插件后&#xff0c;个人认为非常好用&#xff0c;并且可以不用破解&#xff0c;无限使用企业版&#xff0c;了解具体方法可以留言或私信。 记录几个好用的IDEA插件&#xff0c;后续持…

高通车规芯片分析

高通三款芯片 SA8155P 7nm SA8295P 5nm SA8255P 5nm 分析AECQ等级 AECQ100里面定义了5个工作环境温度等级&#xff1a;Grade0&#xff1a;-40-150 Grade1&#xff1a;-40-125 Grade2&#xff1a;-40-105 Grade3&#xff1a;-40-85 Grade4&#xff1a;0-70AEC-Q100整体认证测试…

flex 常见的布局方式

Flexbox 是一种用于 CSS 布局的强大工具&#xff0c;可以帮助你轻松地创建灵活的布局。以下是一些常见的 flexbox 用法和属性&#xff1a; 1. 基本用法 HTML 结构 html 复制代码 <div class"container"> <div class"item">1</div> &…

安装appium自动化测试环境,我自己的版本信息

教程来自&#xff1a;Appium原理与安装 - 白月黑羽 我的软件的版本&#xff1a; 安装是选择为自己安装而不是选all user pip install appium-python-client命令在项目根目录下安装appium-python-client sdk的话最简单的安装方式就是去Android官网下一个android studio然后在…

在美国小众电商平台通过AI+马克杯月入15万,AI副业赚钱思路大揭秘

AI时代&#xff0c;怎么在小众赛道借助AI做好跨境电商生意&#xff1f;今天跟大家分享POD(Print On Demand)定制赛道的案例。在美国小众手工艺电商平台Etsy通过AI马克杯月入15万&#xff0c;这篇文章会跟大家分享具体的副业案例&#xff0c;商业模式&#xff0c;AIPOD模式具体流…

学会这4个Word打印技巧,让你工作效率翻倍!

作为打工人&#xff0c;我们经常需要打印各种Word文档&#xff0c;以下分享的6个Word打印技巧&#xff0c;如果你不知道就太可惜了&#xff0c;一起来看看吧&#xff01; 技巧1&#xff1a;打印当前页 如果Word文档有很多页&#xff0c;但只需要打印其中的一页&#xff0c;可以…

matplotlib---气泡图

气泡图简介&#xff1a; 气泡图&#xff08;Bubble Chart&#xff09;是一种数据可视化图形&#xff0c;主要用于展示多个数据点之间的关系。 气泡图通过气泡的大小&#xff0c;位置和颜色可以展示数据之间的关系。在气泡图中&#xff0c;横轴和纵轴通常表示数据的两个维度&a…

山东省泰安市泰山夜市文化惠民活动精彩纷呈

5月24日&#xff0c;山东省泰安市泰山区岱庙街道办事处携手徂徕镇人民政府联袂打造的特色产品爱心助农惠民购活动在泰山夜市圆满举行。此次活动通过“等岱你徕”惠民消费专场、网红主播直播带货、夜场活动等一系列丰富多样的形式&#xff0c;通过创新的形式和内容&#xff0c;推…

【总结】MySQL 更新数据超时失败-死锁排查解决

MySQL 更新数据超时失败 问题现象 今天操作线上数据时&#xff0c;想要更新一条数据&#xff0c;结果页面上转了很久&#xff0c;最终http请求超时报错。 查看了后端的应用日志&#xff0c;发现如下信息&#xff1a; [2024-05-27 10:29:29.294] ERROR c.t.h.e.ExceptionHan…

【知识蒸馏】多任务模型 feature-based 知识蒸馏实战

一、实现流程 &#xff08;1&#xff09;定义学生和教师模型 &#xff08;2&#xff09;定义特征蒸馏损失 Mimic LossCWD LossMGD LossFeature Loss &#xff08;3&#xff09;使用hook获取需要蒸馏的特征层 定义回调函数使用hook函数获取需要蒸馏的挺特征层 &#xff08;…

太狠了,凌晨5点面试。。

(关注数据结构和算法&#xff0c;了解更多新知识) 网上看到一网友发文说收到面试邀请&#xff0c;面试时间竟然是早晨5点&#xff0c;这是要猝死的节奏。有的网友说应该是下午 5 点&#xff0c;如果是下午 5 点直接写下午 5 点就行了&#xff0c;或者写 17 点也行&#xff0c;直…

[企业级高效系统工具]短视频矩阵系统 ,一站式管理新媒体账号,短视频精准获客,一键管理上千个短视频账。

一、做项目为什么要搭建一款属于自己的系统&#xff1f; 在讲这个短视频矩阵系统前&#xff0c;我们聊聊做项目的时候为什么要搭建一款属于自己的系统。 1.拥有自己的系统&#xff0c;就意味着你可以随时随地进行源码部署和更新。你的项目就能紧跟时代潮流&#xff0c;始终保持…