首页 新闻 会员 周边

c#多个应用程序处理同一批数据的一些问题?

0
[待解决问题]

通常我们在处理web程序的时候,对应一些公用数据的操作,都会进行加锁处理,主要是为了防止并发时造成的数据错乱。现在编写了一个控制台程序,来处理一批数据,希望如果开启两个控制台程序的时候,这两个程序分别来处理这一批数据,以此类推如果是开起三个控制台程序就3个并行处理。但是中间会引发一些问题,如何防止开启的程序,他们所处理的数据都是不重重。虽然说可以在获取到数据的时候加一个标签标记数据已经被程序占用。但是如果这两个程序在同一时间都来获取这个数据,这个时候如何处理。因为这个时间点这点数据并没有被其他程序标记为占用。而这两个程序好像又不能通过锁的形式来处理并发。

是否有一种方式可以通过类似于web 多线程里面加锁的方式来限制多可独立启动的客户端不能同时获取同一条数据。

yzy的主页 yzy | 菜鸟二级 | 园豆:317
提问于:2016-07-25 16:06
< >
分享
所有回答(3)
0

虽然说可以在获取到数据的时候加一个标签标记数据已经被程序占用。

保证这个操作的原子性就可以解决问题

czd890 | 园豆:14412 (专家六级) | 2016-07-25 19:31
0

1,可以把多进程改为多线程,毕竟线程处理锁容易一些;

2,我想到一种方法:

每个处理进程对一一个队列,专门再起一个进程负责往N个队列中放数据。

会长 | 园豆:12401 (专家六级) | 2016-07-25 20:21
0

部署在同台机器上的话用mutex就可以解决,部署在不同机器需要额外找个玩意来做临界量,比如db/nosql

如果蛋疼的话可以看下paxo等协议实现下。当然按照楼上的用队列进行隔离也是很简单的方案

Daniel Cai | 园豆:10424 (专家六级) | 2016-07-26 10:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册