如何防止在多线程的情况下插入数据,导致数据重复的方法?

如何防止在多线程的情况下插入数据,导致数据重复的方法?,第1张

关键是插入数据的行为要分为2个软件层次来设计.一个是A插入请求层,一个是B插入执行层.

其中A是多线程的没有错,但B一定是单个的线程,或者设计为windows消息循环机制或者采用线程同步互斥的方法.

只有这种框架结构才能达到你说的那种效果.

其实这个不是加锁的问题,而是数据分发的问题。加锁是为了防止高并发下产生脏数据,而你其实是希望处理过或者已被其他线程先拿到的数据不要再处理了,对吧?

如何进行数据分发,提高集群(或多线程)处理效率,这个要结合你们的数据模型来考虑。

比如处理的数据ID中有数字标识,当前你有10台机器或者10个线程,那么可以让这10台机器各自读取1/10的数据,这可以通过取余(%10)做到。比如第1台机器读取i%10==1的ID的数据,第2台读取i%10==2的,以此类推。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11878356.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存