Работа со списком в многопотоке.

  • Автор темы Автор темы Mutant
  • Дата начала Дата начала

Mutant

Client
Регистрация
19.09.2014
Сообщения
201
Реакции
36
Баллы
28
Есть список и есть переменная. Задача - очистить список от начала до значения указанного в переменной. В однопотоке просто брал первую строчку из списка с удалением, сравнивал с переменной и если не совпадало брал следующую строку из списка. Пока не доходил до нужного мне значения.
Дальше работал с оставшимся списком.
Подскажите как правильно реализовать такое при многопотоке?
 
попробуйте список в файл положить и брать от туда с удалением, при много потоке работает норм
берите также количество строк из списка и сравнивайте с переменной
 
1. Список должен быть привязан к файлу, обязательно, иначе у каждого потока будет своя копия списка
2. При работе со списком надо использовать
C#:
Развернуть Свернуть Копировать
lock(SyncObjects.ListSyncer){
// тут код работы со списком  
}
Для того, чтобы другие потоки ждали , пока поток работающий со списком произведет в нем изменения

Или глобальные переменные, но это изврат еще тот будет.
 
1. Список должен быть привязан к файлу, обязательно, иначе у каждого потока будет своя копия списка
2. При работе со списком надо использовать
C#:
Развернуть Свернуть Копировать
lock(SyncObjects.ListSyncer){
// тут код работы со списком 
}
Для того, чтобы другие потоки ждали , пока поток работающий со списком произведет в нем изменения

Или глобальные переменные, но это изврат еще тот будет.

При работе стандартными экшнами лочить список нет нужды.
 
Что то я совсем запутался...
Давайте я озвучу как я все понял, а вы скажите где я не прав.
Предположим у нас 5 потоков. Первый поток начал работать со списком, залочив его для остальных (тут все понятно). Дальше отработав он снимает лок с файла и из оставшихся четырех - кто первый встал, того и тапки. Остальные 3 опять ждут. Но первый поток пришел опять что бы работать с этим же списком. Он обязательно станет в очередь за теми тремя которые еще не успели отработать в первый раз? Или он будет бороться кто быстрей?
 
Всё происходит в порядке живой очереди :)
В целом не стоит об этом переживать - реализация работы в многопотоке со списками в зенно очень корректна, во всяком случае на собственном опыте проверял ~100 потоков друг другу не мешают и читают / пишут в один список всё как надо.
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)