Mam kolekcję instancji BufferedImage
, jednego głównego obrazu i niektórych podobrazi utworzonych przez wywołanie getSubImage
na głównym obrazie. Podobrazie nie zachodzą na siebie. Wprowadzam także modyfikacje do subimage i chcę podzielić to na wiele wątków, po jednym na subimage.Bezpieczne, aby zaktualizować oddzielne regiony BufferedImage w osobnych wątkach?
Z mojego zrozumienia jak BufferedImage
, Raster
i DataBuffer
pracy, to powinno być bezpieczne, ponieważ:
- Każda instancja
BufferedImage
(i jej odpowiedniaWritableRaster
iSampleModel
) jest dostęp tylko z jednego wątku. - Wspólna
ColorModel
jest niezmienna DataBuffer
nie ma pola, które mogą być modyfikowane (jedyną rzeczą, która może zmienić to elementy tablicy podkładowej.)- Modyfikowanie rozłączne segmenty tablicy w oddzielnych wątków jest bezpieczny.
Jednak nie mogę znaleźć niczego w dokumentacji, która mówi, że zdecydowanie jest to bezpieczne. Czy mogę założyć, że jest bezpieczny? Wiem, że można pracować na kopiach dziecka, ale wolałbym tego uniknąć z powodu ograniczeń pamięci.
Czy możliwe jest wykonanie operacji bez zabezpieczeń, bez kopiowania regionów obrazu macierzystego?
Wtedy nie ma żadnej korzyści dla podziału obrazu. – finnw
Wolałbym kontynuować przetwarzanie podobrazów pojedynczego obrazu w wielu wątkach, aby zmniejszyć opóźnienie. Nawet jeśli okaże się, że wymaga to skopiowania podobrazów. – finnw