- Регистрация
- 01.07.2016
- Сообщения
- 194
- Благодарностей
- 22
- Баллы
- 18
Доброго времени суток.
Такая штука, есть список по которому проходят проверки список очень большой от 100к строк и продолжает расти.
Стандартный `List.Contains`метод дает само собой плохой результат так как стандартный список не рассчитан на такое количество данных по этому стал использовать HashSet (если кому интересно то можете почитать про производительность HashSet и List на StackOwerflow был даже вопрос где кто то привел подробный тест производительности и того и другого вида ссылку не помню но если погуглите найдете)
Сам код проверки наличия элемента в списке довольно стандартный работает как надо:
Вот собственно в чем проблема в добавлении элемента. Работаю в многопотоке, и когда записываю строку в тот самый заветный файл иногда инстансы пытаются сделать это одновременно и соответственно возникает ошибка так как только один процесс может взаимодействовать с файлом в таком ключе.
Читал о lock методе в Zenno но не смог разобраться как прикрутить его к этому скрипту если кто делал подобное можете помочь пожалуйста.
Вот сама запись в файл(список (HashSet)):
Такая штука, есть список по которому проходят проверки список очень большой от 100к строк и продолжает расти.
Стандартный `List.Contains`метод дает само собой плохой результат так как стандартный список не рассчитан на такое количество данных по этому стал использовать HashSet (если кому интересно то можете почитать про производительность HashSet и List на StackOwerflow был даже вопрос где кто то привел подробный тест производительности и того и другого вида ссылку не помню но если погуглите найдете)
Сам код проверки наличия элемента в списке довольно стандартный работает как надо:
Код:
HashSet<string> set = new HashSet<string>(File.ReadLines("c:/set.txt"));
string str = "Какая то переменная из зенки или от куда угодно";
if(set.Contains(str))
{
// Делаем что то
}
else
{
// Делаем то то
}
Читал о lock методе в Zenno но не смог разобраться как прикрутить его к этому скрипту если кто делал подобное можете помочь пожалуйста.
Вот сама запись в файл(список (HashSet)):
Код:
File.AppendAllText(@""c:/set.txt"", "text content" + Environment.NewLine)