首页 新闻 会员 周边 捐助

这个并发问题怎么解决

0
悬赏园豆:5 [已解决问题] 解决于 2010-01-09 20:54

游戏中有一个交易所,交易所里面有道具出售,如果两个人同时去买,怎么防止并发呢,实际情况应该是这两个人买的时候肯定有先后的,时间差只是很小,第二个人买的时候应该提示已经被买走。整个交易所的数据是一个集合存在内存里的

问题补充: 能具体点吗谢谢
拖鞋王子的主页 拖鞋王子 | 初学一级 | 园豆:38
提问于:2009-12-31 15:10
< >
分享
最佳答案
0
1 class GameBiz
2 {
3 Hashtable data;
4
5 public void Buy()
6 {
7 lock(data)
8 {
9 //交易...
10   }
11 }
12
13 public void Sell()
14 {
15 lock(data)
16 {
17 //交易...
18 }
19 }
20 }

 

差不多是这么个流程。

这样做,不管是在买还是在卖,都会保证同时只有一个线程在做这件事,其他的线程会在lock的地方排队等待。

收获园豆:5
达达 | 菜鸟二级 |园豆:230 | 2010-01-03 10:11
其他回答(2)
0

这不是并发,是线程同步,

给加个锁

一滴血 | 园豆:1602 (小虾三级) | 2009-12-31 15:13
0

就用最普通的乐观并发处理方式就好了啊。

Jeffrey Zhao | 园豆:1629 (小虾三级) | 2009-12-31 20:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册