Как раз таки не самый простой. Самый простой и надежный - это делать бэкап source файла ручками, брать строки с удалением и не париться. Я не думаю, что клиенты настолько тупые, что не поймут такую банальную вещь.
1. Клиенты встречаются разные.
2. Чаще всего клиент не знает чего он хочет, не говоря уже о нюансах реализаций.
3. Клиент не обязан быть профессионалом в том вопросе для решения которого он нанимает специалиста.
4. Тупой или нет - клиент это человеческий фактор, который вмешивается в работу программы. До сорока процентов всех неполадок так или иначе связано с человеческим фактором.
Исходя из вышеизложенного, я вижу абсолютно естественным решением минимизировать влияние клиента на файлы с которыми работает программа. Предложенный мной выше вариант подходит для решения этой задачи. Пара байт записывается в файл очень быстро. Особенно если при этом не нужно вносить изменения в файловую систему. Понятно,, что конкретные параметры на разных системах могут существенно отличаться. Естественно, что у каждого решения есть свои плюсы и минусы. И в большом количестве потоков внешний счетчик может давать сбои,
равно как и любые другие решения. К сожалению, ТС не уточнил ресурсоёмкость шаблона и расчетное рабочее количество потоков. Также он по какой-то причине не хочет использовать очевидное решение с подгрузкой списка из файла по ошибке взятия следующего элемента.
Отсутствие полноценной детализации задачи вынуждает исходить из личного опыта при формировании рекомендаций.