Какая практика программирования лучше всего подходит для этого случая:
У меня есть связанный список с файловыми объектами, время от времени входящие файловые объекты добавляются в этот список ( AddThread ).
Эти файловые объекты должны быть "обработаны", предположительно, другим потоком ( ProcessThread ). Таким образом, всякий раз, когда файловые объекты добавляются в список, их необходимо обрабатывать по одному, в то время как другие файловые объекты все еще можно добавлять в список.
Во время обработки элемент из списка читается и впоследствии удаляется из этого списка. Обработка останавливается всякий раз, когда список пуст, и начинается при добавлении новых элементов.
Как я это вижу:
Всякий раз, когда к списку применяется изменение (элемент добавлен), инициируется событие изменения. Это событие вызывает ProcessThread . ProcessThreads блокирует список на короткое время для его чтения и снова снимает блокировку. Когда файл-объект обрабатывается, он снова блокирует его, чтобы быстро удалить элемент из списка и разблокировать его.
Если в списке больше нет файловых объектов, ProcessThread устанавливается в спящий режим.
Это правильный способ сделать это, или есть другие лучшие варианты ..?
Приветс Даан
Редактировать : я использую связанный список, потому что тогда я могу добавить файл-объект в начало или конец списка, чтобы он обрабатывался до / после других. Обработка может занять до минуты, в зависимости от загрузки сети. Иногда происходит сбой, и его необходимо снова обработать.