多线程-linux 多进程共享数据库
我的数据库上有个待发送表,表里面存储的是给手机发送的短信息,我有多个进程并发放问这个待发送表,取出短信内容,操作流程如下:
进程1查表取出n条数据-----> 发送短信----->删除这n条数据。
进程2查表取出n条数据-----> 发送短信----->删除这n条数据。
。。。。。
进程m查表取出n条数据-----> 发送短信----->删除这n条数据。
多个进程同步操作,这样会出现取到相同数据的情况,出现发送重复的问题,请问该如何解决呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
每个进程读取这n条数据之前,先给这n条数据加一个标记,然后再把他们取出来发送然后删除,
update message set flag = "process1" where flag is null and (n 条的逻辑);
select * from message where flag = "process1"
delete from message where flag = "process1"
你看这个解决逻辑是否可以?里面的细节你可以自己增加一下
最简单的一个实现可以自己设置一个算法,根据进程编号来获取数据,
比如
进程1 获取 编号1~1000 的数据
进程2 获取 编号1001~2000 的数据
...
以此类推。