我有一个与系统中的外部硬件通信的代码。根据外部硬件发送的事件,我的 C 源代码中的状态将会改变。在系统启动过程中发生了一些握手,需要根据握手将一些信息发送到其他模块。我在回调中设置了一些全局变量,但观察到外部硬件两次发送一些事件,这使得一些回调被调用两次。这会破坏全局变量中的信息。
int global_value = 0;
int eventcb()
{
if (some condition)
global_value = 1;
else if (some condition)
global_value = 2;
else
global_value = 0;
}
第一次调用上述代码时 global_value = 1 让我们说;下次调用回调时,条件将不存在,因此 global_value 将变为 0。我不想使用另一个全局变量来跟踪调用此回调的次数,甚至是基于文件的方法(创建文件系统中的文件)。有什么最佳方法来处理这种情况吗?我无法控制外部硬件使其仅发送一次事件。