Я пытаюсь принять некоторые конструктивные решения для алгоритма, над которым я работаю. Я думаю, что я хочу использовать сигналы и слоты для реализации шаблона наблюдателя, но я не уверен в некоторых вещах.
Вот алгоритм, над которым я работаю:
1.) Load tiles of an image from a large file
1a.) Copy the entire file to a new location
2.) Process the tiles as they are loaded
3.) If the copy has been created, copy the resulting data into the new file
поэтому я предполагаю, что у меня будет класс с функциями, такими как loadAllTiles (), которые будут генерировать сигналы, чтобы сообщить processTile (), что другая плитка готова для обработки, и в то же время перейти к загрузке следующей плитки.
processTile () будет выполнять некоторые вычисления и, когда будет завершено, сообщать writeResults (), что новый набор данных результатов готов для записи. writeResults () проверит, что копирование завершено, и начнет запись выходных данных.
Это звучит разумно? Есть ли способ заставить loadAllTiles () загрузиться в плитку, как-то передать эти данные в processTile (), а затем продолжить и загрузить следующую плитку? Я думал о том, чтобы, возможно, создать какой-то список для хранения плиток, готовых к обработке, и другой список для готовых к записи плиток на диск. Я предполагаю, что недостатком является то, что я должен как-то держать эти списки в такте, чтобы несколько потоков не пытались добавлять / удалять элементы из списка.
Спасибо за понимание.