Многопоточное использование ресурсов-текстовых файлов как списков
-
@support said in Многопоточное использование ресурсов-текстовых файлов как списков:
Можно создать список(или таблицу, удобней для данной задачи) и хранить его в глобальной переменной, во время смены его содержимого можно не боятся, что управление перейдет во второй поток, и он нарушит целостность данных.
меня вот что беспокоило:
- работает 100 потоков
- поток 1 получил значение с глобальной переменной
-- опасная зона , идут остальные действия, не касающиеся глобальной пер. - поток 1 начал это значение распарсивать / проверять / выбирать не важно что, он работает с этим значением, которое сейчас находится в локальной переменной.
- после того , как поток 1 взял что ему нужно и это удалил с этих значений, он записывать в глобальную уже измененный данные.
так вот , во время "опасной зоны" потоки другие не смогут считать значение глобальной переменной? Потому что так и нужно, они не должны иметь возможность считать ее, иначе они получат те же данные, что и поток 1.
-
@out said in Многопоточное использование ресурсов-текстовых файлов как списков:
так вот , во время "опасной зоны" потоки другие не смогут считать значение глобальной переменной? Потому что так и нужно, они не должны иметь возможность считать ее, иначе они получат те же данные, что и поток 1.
Нет, не смогут. В это время остальные потоки вообще работать не будут, при условии что в опасной зоне все действия синхронные.
-
@support очень гуд, спасибо! Теперь все прояснилось. Эти посты надо в закладки добавить )
-
@out А еще лучше тему в вики дополнить про многопоточность. Но хочу добить фреймы сначала.
-
@out said in Многопоточное использование ресурсов-текстовых файлов как списков:
так вот , во время "опасной зоны" потоки другие не смогут считать значение глобальной переменной? Потому что так и нужно, они не должны иметь возможность считать ее, иначе они получат те же данные, что и поток 1.
Еще уточню на счет файлов. Возьмем примеры выше, только вместо глобальной переменной пусть будет файл, то к нему это также применимо ? :
@support said in Многопоточное использование ресурсов-текстовых файлов как списков:
Нет, не смогут. В это время остальные потоки вообще работать не будут, при условии что в опасной зоне все действия синхронные.
Ведь чтение/запись в файл синхронные (ты вроде это писал где-то).
-
@out Да, операции с файлами тоже синхронные.
-
@out Исключение - поиск файлов, он асинхронный. Также хочу обратить внимание, что получение ресурсов тоже асинхронная операция. Так что ресурсы нужно сохранять в переменные до критической секции.
-
А выведение в лог и ожидание ("спать") - синхронные или асинхронные? Есть где-то инфа с делением всех действий на синхронные и асинхронные?
-
@Antonio said in Многопоточное использование ресурсов-текстовых файлов как списков:
А выведение в лог и ожидание ("спать") - синхронные или асинхронные?
Добавь эти действия, и открой вкладку Скрипт, если код действия будет заканчиваться на ! то оно асинхронное.
-
@santilo, спасибо!