找回密码
 立即注册
楼主: 王昱顺

最佳入门多线程示例讲解-核心代码简单易懂,仅44行代码

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-07-17 10:33:23

0

主题

1

回帖

10

积分

新手上路

积分
10
发表于 2024-7-16 19:03:50 | 显示全部楼层
谢谢大佬
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:433
  • 最近打卡:2025-04-30 07:30:29
已绑定手机

229

主题

328

回帖

1467

积分

金牌会员

积分
1467
发表于 2024-7-16 20:12:52 | 显示全部楼层
这是个状态机,和线程的概念天差地别。线程是两个while(1)来回切换任务
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-30 15:53:34

7

主题

48

回帖

231

积分

中级会员

积分
231
发表于 2024-9-19 15:06:31 | 显示全部楼层
王*** 发表于 2023-9-12 08:34
对的, 多个Delay会只生效最后一个, 如果需要多个Delay,可以在后面的case中继续使用 ...

其实Task_This[]只要有两个状态就行了,0执行任务,设置延时,1检查计时完成再回到0,至于状态2我觉得多余

点评

这个其实就是状态机增强版本。适合多个顺序任务执行。 比如实现一个机械结构的动作,可以执行机构一,延时2s,执行机构二,延时0.5s,等待信号触发,返回开头。这样子 然后其他的顺序任务也可以一起执行  详情 回复 发表于 2024-9-19 15:08
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2218

回帖

5450

积分

版主

积分
5450
发表于 2024-9-19 15:08:51 | 显示全部楼层
乘*** 发表于 2024-9-19 15:06
其实Task_This[]只要有两个状态就行了,0执行任务,设置延时,1检查计时完成再回到0,至于状态2我觉得多 ...

这个其实就是状态机增强版本。适合多个顺序任务执行。
比如实现一个机械结构的动作,可以执行机构一,延时2s,执行机构二,延时0.5s,等待信号触发,返回开头。这样子
然后其他的顺序任务也可以一起执行

点评

也对,case写多点就可以了  发表于 2024-9-19 15:27
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:53
  • 最近打卡:2025-05-01 10:41:47

5

主题

62

回帖

168

积分

注册会员

积分
168
发表于 2024-9-19 16:41:55 | 显示全部楼层
截图202409191641166992.jpg
这本书网上有电子版。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:231
  • 最近打卡:2025-05-01 08:51:22

0

主题

26

回帖

600

积分

高级会员

积分
600
发表于 2024-12-27 20:30:51 | 显示全部楼层

在看b站的51框架式编程的视频,忽然想到论坛应该会有更多资源。搜到楼主的帖子,看的视频跟楼主的有些不一样,先学会b站的,再来慢慢消化楼主的,谢谢楼主提供的思路

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:166
  • 最近打卡:2025-04-30 13:36:04
已绑定手机

34

主题

171

回帖

1177

积分

金牌会员

积分
1177
发表于 2024-12-30 11:44:50 | 显示全部楼层
ys*** 发表于 2024-9-19 16:41
这本书网上有电子版。

这个不错,能不能分享
8位程序---换个STC32G.h头文件,换个C251编译器就直接到STC32的高度了;
          想回到8位机,则换个STC8H.h头文件,换个C51编译器就回到8位机了.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:346
  • 最近打卡:2025-05-01 19:40:16

10

主题

165

回帖

1233

积分

金牌会员

积分
1233
发表于 2025-4-1 11:40:36 | 显示全部楼层
王*** 发表于 2024-1-31 14:11
下一个状态是case 1,但是因为没有声明,所以会回到默认的default,这里面的函数功能是不断查询定时器 ...

王工,你好,我有一个5个报警状态,现在一个一个报警我能实现了,但如果多个状态报警,且从小到大顺序显示,这个我不知道怎么实现,看了你的这个感觉应该能应用上,但我不知道要怎么写,比如E1,E2,E4,报警,要显示E11秒后灭掉,再显示示E2一秒后灭掉,再显示E4,这样轮询。如果这时E2报警解除,下次是就只显示,E1和E4.只到最后全部解除报警,正常显示。

点评

很简单,分成6个线程,每个报警状态仅触发一个标志位,可以用一个数组之类的全局变量来标识 然后有一个显示报警线程,循环显示所有的报警状态,从小到大轮询刚才的全局变量判断,有报警状态就显示,没有的话跳过到达  详情 回复 发表于 2025-4-1 12:31
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2218

回帖

5450

积分

版主

积分
5450
发表于 2025-4-1 12:31:39 | 显示全部楼层
lh*** 发表于 2025-4-1 11:40
王工,你好,我有一个5个报警状态,现在一个一个报警我能实现了,但如果多个状态报警,且从小到大顺序显 ...

很简单,分成6个线程,每个报警状态仅触发一个标志位,可以用一个数组之类的全局变量来标识
然后有一个显示报警线程,循环显示所有的报警状态,从小到大轮询刚才的全局变量判断,有报警状态就显示,没有的话跳过到达下一个
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:346
  • 最近打卡:2025-05-01 19:40:16

10

主题

165

回帖

1233

积分

金牌会员

积分
1233
发表于 2025-4-1 12:34:17 | 显示全部楼层
王*** 发表于 2025-4-1 12:31
很简单,分成6个线程,每个报警状态仅触发一个标志位,可以用一个数组之类的全局变量来标识
然后有一个显 ...

我也是想这样写,但代码逻辑不太明白

点评

https://www.stcaimcu.com/thread-16598-1-1.html 建议用这个,会好写很多  详情 回复 发表于 2025-4-1 12:44
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 19:41 , Processed in 0.128535 second(s), 121 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表