程序中多个变量不知道先后变化顺序的判断方法

本文介绍了在编程中处理两个可能并发变化的变量A和B的方法。通过将A和B组合成一个字节变量C,并使用定时器监控变量变化,确保在A或B变化后能准确判断后续状态。该策略适用于多线程或并发场景,旨在确保程序在不确定变量变化顺序时仍能正确处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序中,我们会碰到,A、B两个变量在相近的时刻都可能发生变化,但是具体是哪个变量先变化不得而知,但我们在后期判断的时候,又必须明晰A变量变化前提下,判断B变量的变化情况。

1、方法

0)将ABC的值都保存;

1)将这AB组成一个字节变量C,只要是这个字节变量C发生变化,我们就获知AB肯定发生了变化(不管是A变了还是B变了);

2)开启定时器,等待另一个变量的变化结束(加入另一个量发生了变化),同时,置同C变量的值;

3)待A和B均变化结束后,判断是A变了,还是B变了。

4)置同A和B变量前后的值。

typdef struct {

uint_32 a:1,
uint_32 b:1,
uint_32 nouse:30 
}MYSTRUCT;



 int A_1,A_2,B_1,B_2;
 MYSTRUCT C_1,C_2;
int timer;

while(1)
{

    A_1 = A_2;
    B_1 = B_2;
    C_1 = C_2;

    //实时获取全局量A_2、B_2的值,且赋值给C_2

    C_2.a = A_2;
    C_2.b = B_2;

    if(C_2 != C_1)
    {     
        timer = 100;//开启定时器
        C_1 = C_2;//C置同
    }else{    
        if(定时器 == 0)
        {
            //判断A、B值的变化
               do sth.
        //置同A变量前后的值,置同B变量前后的值
            A_1 = A_2;
            B_1 = B_2;          
        }else{
            //定时器--;
            timer--;
        }
    }
}
}

2、总结

1)将不知道变化先后的量组成一个值,来判断

2)加延时,给变量变化留时间

3)C变量要将副本置同,保证接下来的else能够起作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值