Использование глобальной переменной в многопотоке в качестве счётчика.

zivillos

Пользователь
Регистрация
27.02.2018
Сообщения
77
Благодарностей
3
Баллы
8
Всем привет! Мне нужно использовать глобальную переменную в многопотоке в качестве счётчика.

К примеру беру глобальную переменную global_counter из пространства имён [email protected].

К примеру запускается поток.
Как я понял, мне для начала нужно блокировать доступ для всех остальных потоков к глобальной переменной.
Проверять инициализирована она или нет. Если не инициализирована, то задавать значение, а если инициализирована, то увеличивать на единицу.
Потом мне нужно до момента разблокировки доступа для потоков скопировать значение глобальной переменной в локальную local_counter для дальнейшей работы. Кто-то может помочь кодом?

Грубо говоря мне нужно сделать так, чтобы процесс, изображённый на прикреплённом рисунке был для многопотока. Блокировался доступ к переменной ... увеличивалось значение на единицу ... передавалось это значение локальной переменной ... и разблокировался доступ затем!

Заранее спасибо!
1.jpg
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113

zivillos

Пользователь
Регистрация
27.02.2018
Сообщения
77
Благодарностей
3
Баллы
8
Большое спасибо!!!
 

zivillos

Пользователь
Регистрация
27.02.2018
Сообщения
77
Благодарностей
3
Баллы
8
К сожалению код почему-то работает через раз. И, что самое странное, только когда я в нём меняю первоначальную глобальную переменную на свою. Не могу понять в чём дело....
 

zivillos

Пользователь
Регистрация
27.02.2018
Сообщения
77
Благодарностей
3
Баллы
8
Вот исходный код, который мне посоветовали (за что я благодарен):

gv1.jpg


Стоит мне заменить в нём глобальную переменную на свою .... и начинаются проблемы. Не могу понять почему?!? Только имя и область глобальной переменной на свои соответственно...

gv2.jpg
 

zivillos

Пользователь
Регистрация
27.02.2018
Сообщения
77
Благодарностей
3
Баллы
8
Увеличил код на изображении чтобы лучше было видно:
gv3.jpg
 

zivillos

Пользователь
Регистрация
27.02.2018
Сообщения
77
Благодарностей
3
Баллы
8
Блин, вроде нашёл ... глобальную переменную не надо объявлять ... надо удалить её из списка переменных!!! Oh my God ...
 

Dexio

Client
Регистрация
09.05.2014
Сообщения
1 254
Благодарностей
220
Баллы
63
А почему вы не используете просто счетчик, сохраняемый и подгружаемый из файла для этой задачи? Мне так казалось всегда проще, заодно и посмотреть на текущее значение можно
 
  • Спасибо
Реакции: phirelli и Sergodjan

melutsk

Client
Регистрация
03.08.2016
Сообщения
1 345
Благодарностей
1 256
Баллы
113

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 598
Баллы
113

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