Как передать переменную между профилями без конфликта в многопотоке?

Kurator

Client
Регистрация
10.05.2016
Сообщения
80
Благодарностей
2
Баллы
8
Задача такая: профиль1 создает переменную1 с рандомным значением. я передаю переменную1 с этим значением в профиль2 через глобальную переменную в этом же шаблоне. Когда профиль2 отработает, он должен вернуть переменную2 профилю1.
В многопотоке не будет ли одинаковые значения у переменной1 и переменной2 для всех потоков? Ведь пространство имён одинаковые, как я понимаю, для всех потоков будет. как лучше сделать?
Если можно было бы каждому потоку присвоить только то пространство имён для глобальной переменной, которое использовал бы только этот поток. Т.е. у каждого потока свои глобалки. Так можно сделать?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
лучше сделать через общие файлы. например таблицы/БД , с обязательным локированием на время работы с этими ресурсами.
 
  • Спасибо
Реакции: Kurator

Kurator

Client
Регистрация
10.05.2016
Сообщения
80
Благодарностей
2
Баллы
8
1.как сделать локирование?
2. если локнуть, то другие потоки будут простаивать? тогда это не многопоток получается(
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
1.как сделать локирование?
2. если локнуть, то другие потоки будут простаивать? тогда это не многопоток получается(
ну да. именно в этом месте будет многопоток, но выстроившийся в очередь. так сказать узкое место, но очень необходимое при работе с общими данными. поэтому локирование не стоит использовать направо и налево, а только в конкурирующих местах. и еще надо использовать разные объекты для лока, что бы ненароком не тормознуть потоки обращающиеся к разным общим таблицам, но залоченные одним локом.
тема с локированием https://zennolab.com/discussion/threads/sdelal-zagotovku-pod-mnogopotochnye-shablony-est-gljuki.88478/post-593565
 
  • Спасибо
Реакции: Kurator

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