Re: Окончательные комментарии
От: scale_tone Норвегия https://scale-tone.github.io/
Дата: 16.11.10 15:20
Оценка: 22 (8) +3
Сегодня были получены окончательные комментарии от уважаемого специалиста к улучшенному варианту решения. Мои ответы:

1. Синхронизация.
Был неправ, она есть, но у меня к ней существенные претензии:
а) я категорически против такого решения, ибо блокировки очень значительные, и мне лично очень не нравится, что такое решение рассматривается. Если бы изначально было написано, что синхронизация реализована неэффективно с такими-то целями, также рассматриваливась лучшие варианты (какие именно) — отношение к решению было бы лояльнее.


Про эффективность/неэффективность решения я писал здесь
Автор: scale_tone
Дата: 14.11.10
.
Да, наверно, было бы неплохо, если бы в сопроводительном письме я описал другие варианты синхронизации.
Но судя по комментариям
Автор: scale_tone
Дата: 14.11.10
от уважаемого специалиста, сопроводительное письмо он все равно не читал, так что это нам бы не помогло.

б) не до конца понимаю, как все работает при условии, что файл записывается на диск и это требует его перемещения в конец таблицы, а в это время кто-то другой активно двигает файлы Я почти уверен, что работать не будет.


Есть такая штука — контекст синхронизации
Автор(ы): Joseph Albahari
Дата: 24.03.2007
Подробно рассматривается работа с потоками — запуск, завершение, прерывание, блокировки, синхронизация, контексты синхронизации, особенности взаимодействия с апартаментами, а также потоковые возможности .NET — потоковые таймеры, пулы потоков, BackgroundWorker, асинхронные методы и делегаты.
В статье использован материал из книги Joseph Albahari, Ben Albahari "C# 3.0 in a Nutshell" — http://www.oreilly.com/catalog/9780596527570/
(кстати, обратите внимание на название раздела, где расположена статья). Экземпляры FsSyncFileStream создаются внутри экземпляра FsDisk и потому получают общий с ним контекст. В результате методы FsSyncFileStream.Write() даже разных экземпляров не работают параллельно в разных потоках. И не должны работать, потому что физический файл — один, и параллельная запись в него из разных потоков невозможна.

2. Таки кнопка cancel всегда неактивна (как минимум, мне не удалось ее увидеть работающей). Что странно, ибо это именно то, что Вы переделывали.


New VirtualFS...->(выбираем файл)->(вводим имя папки на диске)->Import physical folder...
Кнопка Cancel раздизабливается, но, разумеется, только на время выполнения асинхронной операции.
Уважаемый специалист вновь не захотел потратить немножко своего времени...

4. Отсутвие unit-тестов удивляет — мне трудно понять, как без них можно заставить работать не самую тривиальную программу.


Удивляет, что это удивляет уважаемого специалиста только сейчас. Хотя еще в сопроводительном письме к решению я упоминал, что готов их реализовать и предоставить, если потребуется. Уважаемый специалист не читал сопроводительного письма.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.