Здесь все обычно, то есть так, на примере критической секции.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
procedure TRPTests.SharedResourceExample; var json: ISuperObject; i: Integer; begin Main.CS.Enter(); try json := SO; for i := 0 to Main.SomeSharedResource.Count - 1 do json.S['value_' + i.ToString] := Main.SomeSharedResource.ValueFromIndex[i]; FResponses.OkWithJson(json.AsJSon(false, false)); finally Main.CS.Leave(); end; end; |
Есть у нас в памяти некоторый общий ресурс, обратиться к нему могут 300 000 потоков, поэтому защищаем его критической секцией.