|
•
|
|
•
|
|
•
|
Dynamic Data Exchange(DDE)サーバーの役割を果たすアプリケーションを書きます。Btrieve 呼び出しを行うサーバー アプリケーションは、サーバー アプリケーションへ要求を発信するアプリケーション間で返された情報を分配する必要があります。この場合、アプリケーションは各要求元のアプリケーションに異なるクライアント ID を割り当てることにより、複数のクライアント間に配信される情報を追跡するための手段を提供できます。
|
|
•
|
|
•
|
|
•
|
|
•
|
|
•
|
|
•
|
|
•
|
Close オペレーションは、並行トランザクション内から設定された明示的レコード ロックを解除しない。MicroKernel のバージョン 7.0 では、たとえレコードがロックされていてもトランザクション内でファイルを閉じることができます。
|
|
1. 並行トランザクションを開始します。
|
|
|
2. レコード A を読み取ります。
|
|
|
3. レコード A を更新します(関連するページに対するロック、ただし、レコードに対する暗黙ロックなし)。
|
|
|
4. 単一レコード ロック(レコード上の明示的ロック)を持つレコード A を読み取ります。
|
|
|
5. トランザクションを終了します(ページ ロックを解除する)。
|
|
|
6. レコード A を更新します(競合、ステータス コード 80)。
|
|
|
7. ロックを持つレコード A を再度読み取ります。
|
|
|
8. レコード A を更新します。
|
|
1. 複数ノーウェイト ロック バイアスを指定して並行トランザクションを開始する(1419)
|
||
|
2. 単一ウェイト ロック バイアスを指定して並行トランザクションを開始する(1119)
|
||
|
3. 単一ノーウェイト ロック バイアスを指定した Get Equal を使用してレコード A を読み取る(205)
|
||
|
4. Get Equal(5)を使用してレコード B を読み取る(単一ウェイト ロック バイアスを継承)
|
||
|
5. Get Equal(5)を使用してレコード B を読み取る
|
||
|
6. レコード B の削除(4)を試みる:MicroKernel がステータス コード 84 を返すため、クライアント 3 は再試行しなければならない
|
||
|
7. レコード B を更新する(3)
|
||
|
8. レコード A の更新(3)を試みる:MicroKernel が再試行しなければならない
|
||
|
9. トランザクションを終了する(20)
|
||
|
10. レコード A の更新(3)を再試行する:正常終了
|
||
|
11. レコード B の削除(4)を再試行する:MicroKernel がステータス コード 80 を返すため、クライアント 3 はレコード B を再度読み取らなければならない
|
||
|
12. Get Equal(5)を使用してレコード B を再度読み取る
|
||
|
13. レコード B の削除(4)を再試行する:MicroKernel はステータス コード 84 を返す
|
||
|
14. トランザクションを終了する
|
||
|
15. レコード B の削除(4)を再試行する:正常終了
|
|
1. ファイル 1 を開く(0)
|
|
|
2. ファイル 2 を開く(0)
|
|
|
3. ファイル 3 を開く(0)
|
|
|
4. 単一レコード ロックを使用してファイル 3 のレコード E を取得する(105)
|
|
|
5. ファイル 1 を開く(0)
|
|
|
6. 排他トランザクションを開始する(119)
|
|
|
7. ファイル 1 のレコード B を取得する(5)
|
|
|
8. ファイル 1 のレコード A を取得する(5)
|
|
|
9. ファイル 1 のレコード A を更新する(3)(ステータス コード 85、再試行)
|
|
|
10. ファイル 2 のレコード C を取得する(5)
|
|
|
11. ファイル 2 のレコード C を更新する(3)
|
|
|
12. ファイル 1 のレコード B を削除する(4)
|
|
|
13. トランザクションを終了する(20)
|
|
|
14. 手順 9 を再試行する(成功)
|