找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 768|回复: 3
打印 上一主题 下一主题
收起左侧

如何实现线程安全的函数

[复制链接]
跳转到指定楼层
楼主
ID:1043747 发表于 2022-11-20 22:35 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这里所说的线程安全,是把主函数和中断看成两个线程。任一线程处于函数中,另一线程进入函数则直接返回,请问可以实现吗?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:883242 发表于 2022-11-20 23:54 | 只看该作者
从你描述的场景来看,似乎是没有RTOS单片机裸机结构。那么就有两种情况:
1)对于标准的c语言来说,不同线程(楼主所说的线程,下同)调用的同一个函数运行起来并不相同,其使用的局部变量是临时在堆栈上生成的,是两套完全不一样的局部变量,并不会发生冲突。如果这个函数改写了全局变量,比如端口地址,那么是你的程序逻辑错误,要检查你自己的思路问题。
2)对于大多数8位单片机c语言,并没有使用标准c的方式来存放局部变量,两个线程调用同一函数是错误的,这个错误在编译期间编译器就会通知你,不会生成可执行代码。
回复

使用道具 举报

板凳
ID:1043747 发表于 2022-11-21 09:10 来自手机 | 只看该作者
Hephaestus 发表于 2022-11-20 23:54
从你描述的场景来看,似乎是没有RTOS单片机裸机结构。那么就有两种情况:
1)对于标准的c语言来说,不同线 ...

多谢,单片机难道不能实现类似JAVA中加锁的机制吗?实现线程对该函数排队访问!
对,函数是对共享资源(端口)有操作
回复

使用道具 举报

地板
ID:77589 发表于 2022-11-21 09:58 | 只看该作者
不知道你是不是说的可重入函数,如果是就去找相关资料看看。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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