私はTObjectListをいくつかのスレッドで処理する必要があります。内部的にTObjectListはTListから継承しており、TListはその内部を配列として実装しています。TObjectListスレッドの異なるインデックスに安全にアクセスできますか?
異なるインデックスにアクセスする限り、異なるスレッドから配列にアクセスするのはスレッドセーフではありますか? TObjectListを呼び出さmyObjectListを有する例えば
:
開始= 0。 end = myObjectList.Count div 2;
スレッド1:
for i := 0 to end do
Process(myObjectList[i]);
スレッド2:
for i := end + 1 to myObjectList.Count - 1 do
Process(myObjectList[i]);
本当にリストを修正する必要はありません。読み込みするだけでロックの負担を避けたいのです。私はちょうどあなたがちょうど問題がないリストを読んでいる限り、それを確認したかった。 –
「読み込み中」は常にスレッドセーフです。別のスレッドがスレッドを使用しようとしている間に、あるスレッドで変更を開始するときにのみ問題が発生します。 –