5

DLL を含む Dot Net プロジェクトに取り組んでいます。この DLL は .lib (C コード) を使用します。残念ながら、この .lib には多くの静的変数があります。ここにある問題:

2 人のユーザーが同時に検索を実行すると、エラーが発生します。どちらも .lib にアクセスし、一方が何かを変更し、他方がデータを読み取ろうとするためです。

明らかな解決策は、アクセスをロックすることですが、検索プロセスが大幅に遅くなるため、私は実際にはそうしたくありません。ライブラリからDLLを作成したいのですが、これで問題が解決するかどうかはわかりません。静的変数が個別に保存されるかどうか、または両方の検索プロセスが同じものにアクセスするかどうかがわからないためです変数。

誰もこれを経験していますか?これを行うにはかなりの時間がかかるため、これを開始する前に機能するかどうかを知りたい.

英語は私の母国語ではなく、私のプログラミング スキルはかなり基本的なものなので、すべてが理解できることを願っています。

4

1 に答える 1

1

私が理解していることから、この .dll 内の既存のクラスを使用してデータを読み取っているときに、同時にデータを編集できる方法はありません。明らかに、どんな凝ったことをしていても、これは機能しません。

あなたができることは、Thunking Layerを作成することです。これは、.dll の代わりに呼び出される一種のラッパー クラスになります。このクラスは、読み取り用にデータのローカル コピーを保持し、実際のデータへの同時編集を許可し、これらの操作が終了したときにローカル コピーを更新する (適切な一時ロックなどを使用して) ことにより、同時 I/O 要求を処理します。私が気付いていない他の標準的な方法があるかもしれませんが、これが私が始める方法です。

これが役立つことを願っています。

于 2012-08-28T08:33:14.310 に答える