我在设计代码的工作方式时遇到了一些困难:
- 序列号 #1(随时接收数据)调用Routine()如果某个特定的接收值A > constant1,但仅当Routine()未运行时,否则只有最后一次调用将在Routine()结束后运行
- Serial #2(随时接收数据)将接收到的数据设置为B和C
- Routine()检查是否C > constant2并将B和C保存到文件中
- 计时器(每 N 秒)运行另一个例程,检查保存的文件并发送电子邮件(在保存B和C时不干扰Routine())
我当前的设计使用了几个全局布尔值,但我认为这会产生一些问题(由于布尔值在检查它和再次设置它以启动“锁定”过程之间发生变化)。
那么,解决此类同步问题的推荐方法是什么?锁定(someGlobalObject)?,使用监视器?(我如何丢弃多个挂起的routine() 调用?),互斥量?,信号量?
谢谢!