探讨一个有关问题
探讨一个问题
写了一个控制台程序
只有一个函数,函数里写了一个while循环,循环里有几个判断
大概过程:
大概是这个过程,我单步执行循环,一些正常,从数据库读数插数都没问题,一条一条读取,不重复也很规律
当主函数调用这个方式函数, 直接运行全部这个控制台程序时,这个循环就不对了,会出现很多重复数据
有没有谁遇到过类似的问题,这是什么原因造成的?
------解决方案--------------------
不知道你的主函数是如何调用子函数的,是直接调用,还是当个线程在跑?
还有,所谓的单步执行循环,是你设置了个断点,一步一步往下走的吗?
如果是这样,那很可能你的程序循环逻辑和数据库的插入操作不同步.
因为没有更具体的代码,我这里只能是猜测.
单步循环的时候你给足了时间,所以逻辑就正确.
而你直接运行,循环跑的快,插入的动作慢.
如果你的循环里判断依据是根据数据库的内容来的,那么程序认为数据库中还没有这一项所以需要处理,其实已经处理过了.
------解决方案--------------------
解决办法就是让程序和数据库同步
2种办法
1.不要用异步的方式访问数据库,改用同步的方式,这样才能精确控制过程
2.循环里加sleep,等待上一个操作执行完毕再进行下一个操作
写了一个控制台程序
只有一个函数,函数里写了一个while循环,循环里有几个判断
大概过程:
data()
{
while()
{
if()
{
......
}
else
{
....
}
}
}
大概是这个过程,我单步执行循环,一些正常,从数据库读数插数都没问题,一条一条读取,不重复也很规律
当主函数调用这个方式函数, 直接运行全部这个控制台程序时,这个循环就不对了,会出现很多重复数据
有没有谁遇到过类似的问题,这是什么原因造成的?
------解决方案--------------------
不知道你的主函数是如何调用子函数的,是直接调用,还是当个线程在跑?
还有,所谓的单步执行循环,是你设置了个断点,一步一步往下走的吗?
如果是这样,那很可能你的程序循环逻辑和数据库的插入操作不同步.
因为没有更具体的代码,我这里只能是猜测.
单步循环的时候你给足了时间,所以逻辑就正确.
而你直接运行,循环跑的快,插入的动作慢.
如果你的循环里判断依据是根据数据库的内容来的,那么程序认为数据库中还没有这一项所以需要处理,其实已经处理过了.
------解决方案--------------------
解决办法就是让程序和数据库同步
2种办法
1.不要用异步的方式访问数据库,改用同步的方式,这样才能精确控制过程
2.循环里加sleep,等待上一个操作执行完毕再进行下一个操作