- Регистрация
- 29.03.2016
- Сообщения
- 24
- Благодарностей
- 0
- Баллы
- 1
Здравствуйте, коллеги. Прошу помощи в таком вопросе. Есть Google Spreadshit таблица. Есть 10 потоков, каждый из которых должен брать одну строку из таблицы, работать с ней, дальше брать следующую и так далее. Одна строка должна быть в работе только 2 раза. То есть 2 потока должны взять ее, остальные пойти дальше.
Какой механизм является наиболее оптимальным для такой задачи? Так как, как я понимаю, если я дам 10 потоков на такой файл, они с большой вероятностью начнут брать одну строку множество раз, перезаписывать результат работы друг друга и будут дублировать друг друга. Также боты должны создавать новые строки в ней, не перезаписывая действия других потоков (это решается атомарным добавлением, тут нет вопросов)
То есть, как сообщить другим потокам, что текущая строка уже в работе у двух ботов?
Обновляется таблица долго. Если боты, которые взяли строку первыми, запишут в нее флаг о том, что каждый из них забрал в работу строку, то пока эти флаги они дойдут до таблицы и назад в другие потоки, другие боты уже 10 раз возьмут в работу эту же строку. Чего необходимо избежать. Как это решить?
Буду признателен за совет.
Какой механизм является наиболее оптимальным для такой задачи? Так как, как я понимаю, если я дам 10 потоков на такой файл, они с большой вероятностью начнут брать одну строку множество раз, перезаписывать результат работы друг друга и будут дублировать друг друга. Также боты должны создавать новые строки в ней, не перезаписывая действия других потоков (это решается атомарным добавлением, тут нет вопросов)
То есть, как сообщить другим потокам, что текущая строка уже в работе у двух ботов?
Обновляется таблица долго. Если боты, которые взяли строку первыми, запишут в нее флаг о том, что каждый из них забрал в работу строку, то пока эти флаги они дойдут до таблицы и назад в другие потоки, другие боты уже 10 раз возьмут в работу эту же строку. Чего необходимо избежать. Как это решить?
Буду признателен за совет.
Последнее редактирование: