こんにちは、ロックレスリストを書き込もうとしています。追加部分が機能していると思いますが、リストからオブジェクトを抽出するコードがうまく機能しません:(
リストは通常のリストではありません..私はインターフェースIWorkItemを持っています
interface IWorkItem
{
DateTime ExecuteTime { get; }
bool Cancelled { get; }
void Execute(DateTime now);
}
そして、私はこれを追加できるリストを持っています:P そして理想は私が Get(); を実行したときです。リストでは、IWorkItem が見つかるまでループする必要があります。
If (item.ExecuteTime < DateTime.Now)
リストから削除して返します..デュアルコアCPUで多くのスレッドを使用してテストを実行しましたが、これまでのところ追加が失敗したことはないようですが、Get関数はいくつかの作業項目を失い、何が悪いのかわかりません.. ...
psこれが機能するようになったら、誰でも自由にコードを使用できます:)まあ、あなたはどうでもいいですが、バグが発生したときのポイントはわかりません:P
コードはhttp://www.easy-share.com/1903474734/LinkedList.zipにあります。実行しようとすると、リスト...
編集: ロックレス リストが動作しています。lock(obj) ステートメントを使用するよりも高速でしたが、Interlocked を使用するロック オブジェクトがあり、ロックレス リストよりもパフォーマンスが優れていました。ここで結果をアップロードするのがうまくいかない場合でも、同じ結果が得られます..