注意が必要な主なことは、2D 配列がいつ、どのように割り当てられるかです。ワーカー スレッドが配列へのアクセスを開始する前にすべての割り当てが行われ、各ワーカー スレッドがスレッドの有効期間中、マスター配列の「行」の 1 つだけを読み書きし、それが唯一のスレッドである場合その行にアクセスすると、配列内のエントリにアクセスまたは更新するスレッドの問題は発生しません。
1 つのスレッドのみが行に書き込みを行っているが、複数のスレッドがその同じ行から読み取りを行っている可能性がある場合は、何らかの同期計画を作成する必要があります。そうしないと、同時書き込みによる部分的な書き込みが原因で、読み取り時に一貫性のないデータや一貫性のないデータが表示されることがあります。 .
各ワーカー スレッドがマスター配列内の 1 つの「行」にハード バインドされている場合、各行に必要なメモリをワーカー スレッド自体によって割り当ておよび再割り当てすることもできます。スレッドによって (再) 割り当てられた行データ。このワーカー スレッドだけがそのスロットに関心があるため、メイン配列のポインター スロットに対する競合は発生しません。ワーカー スレッドが開始される前に、マスター配列が割り当てられていることを確認してください。このシナリオでは、C RTL の malloc 実装がスレッド セーフであることも確認してください。(ビルド オプションでスレッド セーフな RTL を選択する必要がある場合があります)