2016-04-16 12 views
1

私はページを持っていることを想像してみては下記トランザクションの同期方法は?



バランス$ 100                                  ショッピングカート
合計価格$ 90   012のように示してい                         帳2:$ 10
                                                                           ブック1:$、80
--------------------
最終価格$ 10



どのように私はここで、同期を確保することができますか?
たとえば、2人のユーザーが同じアカウントを使用し、同時に異なるトランザクションを送信した場合。それはいくつかの恐ろしいことにつながるでしょう。

答えて

1

これはロックのためのものです。

Balanceを格納する変数をロックし、値を更新してロックを解除します。次に、2番目のトランザクションがロックして更新しようとすると、不十分なバランスで失敗します。

+0

残高をロックする方法を説明できますか?たとえば、2人のユーザーが同じアカウントを使用している場合、フロントエンドページでBalanceパラメータをロックする方法はありますか? – apss1943

+0

@ apss1943:どのデータベース/プログラミング言語を使用していますか? – displayName

+0

javaとmssql。 – apss1943

0

@displayNameは、これが古典的なロックの使用方法であることを示唆しています。

1つのポイントの追加: 単一サーバーの場合、オプションは次のとおりです。 1.スレッド共有ローカル変数。 2.リポジトリのリソースを与え、リソース/リポジトリをロックするシングルトンクラス。

sqlを使用する分散サーバーの場合は、sqlロックを使用できます。

+0

はどちらも全く悪くないです、まだ私は同じ時間でそれを使って何千人もの人々の上にあるかどうかということを考慮しています。 – apss1943

関連する問題