原创
延迟问题 典型的同步问题
2023-10-14 19:44
274
1
1
分类:
物联网
文集:
学习分享
大佬们,遇到一个问题。不知道怎么解决,求个思路。
主函数是状态机。
显示函数的状态机,拆分到最小也要70多ms。
如果有串口发送数据完成,而这时候显示函数的状态机还没结束就没法进处理函数的状态里。
就会延迟。
你遇到的问题似乎是在并行处理或者多线程/多进程管理中,当一个任务(如串口发送数据)在执行过程中,另一个任务(如显示函数的状态机)需要等待其完成才能继续进行。这是一个典型的同步问题。
以下是一些可能的解决方案:
- 使用锁(Mutexes)或信号量(Semaphores):你可以使用这些同步机制来保证在任何时候只有一个任务在执行。这可以避免数据的冲突和不一致。请注意,使用这些机制时需要特别小心,因为它们可能会导致死锁或者饥饿等问题。
- 使用条件变量(Condition Variables):这是一种更复杂的同步机制,允许一个或多个任务等待直到被其他任务唤醒。这是一种很有用的机制,可以避免无效的忙等待。
- 使用回调函数或者事件处理:如果你在设计一个事件驱动的系统,那么可以使用回调函数或者事件处理来处理串口发送完成的事件。当事件发生时,你可以调用一个函数或者改变一个变量的值来通知其他任务。
- 使用多线程或协程:你可以将串口发送和显示函数的状态机放在不同的线程或协程中执行。这样,即使串口发送需要一些时间,显示函数的状态机也可以在另一个线程中继续运行。请注意,使用多线程或协程可能会使代码变得更复杂,需要特别小心处理数据的共享和同步。
- 优化显示函数的状态机:如果显示函数的状态机需要70多毫秒才能执行完毕,那可能是有一些可以优化的地方。是否有一些不必要的计算或者可以并行化的任务?是否可以使用更高效的数据结构或算法?
以上只是一些可能的解决方案,具体的实现方式取决于你的具体需求和使用的编程语言/框架。希望这些建议能对你有所帮助!
作者: 丙丁先生, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-3996156.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论