1.很多计数器的类型是W1C,写1清零。如果正在计数,同时清零操作,可能导致错误。
2.解决;
1)看似解决了问题,但是出现新情况使程序无法终止。disable fork 之后读取寄存器,会发现寄存器正在写,于是一直等待。
2)原因是寄存器模型时原子操作,如果只使用disable fork 野蛮终止,那么此原子操作尚未完成,虽然进程终止了,但是标志位并没有清除,从而出现错误。
3.正确解决方法:
1)如无法得到,表示demo_s已经完成,while 没必要进行下去,直接终止。