Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Потокобезопасен ли префиксный инкремент/декремент? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Помогите написать программу в С++. Найти наибольшую клику в заданном орграфе, используя алгоритм нахождения независимых множеств http://www.cyberforum.ru/cpp-beginners/thread518226.html
Клика – полный подграф неориентированного графа. Другими словами, клика графа есть подмножество его вершин, такое, что между каждой парой вершин этого подмножества существует ребро и, кроме того, это...
C++ Удалить из списка всех неуспевающих студентов (имеющих двойки) Ребята, всем привет. Помогите, пожалуйста! Есть задание : Создать структуру с именем Student с полями: фамилия, имя, номер группы, успеваемость (массив из пяти элементов). Сформировать двусвязный... http://www.cyberforum.ru/cpp-beginners/thread518225.html
C++ Сума четных елементов и т.д.
Здравствуйте, нужно сделать такое задание: 1) нужно создать числовой файл из случайных чисел 2) организовать его просмотр 3) найти сумму четных, не четных, положительных, и отрицательных...
Посоветуйте литературу для MFC проектов C++ 2010 C++
Посоветуйте литературу на которой можно разобрать MFC. А то преподаватель задал л.р. на MFC или CLR и вся группа ничего не знает. Я создал проект в С++ 2010 и там столько всего понаписано, я даже не...
C++ Многопоточность http://www.cyberforum.ru/cpp-beginners/thread518216.html
Здравствуйте. Подскажите пожалуйста как лучше всего организовать многопоточность? Программа должна обрабатывать строки из файла. вариант1 Сейчас пробую загружать файл в вектор, делить на части...
C++ шаблон класса списка Уважаемые программисты! помогите пожалуйста с шаблоном класса списка вот код: template <class T> class ListClass { private: struct Node { T Value; Node* next; }; Node* first; //первый... подробнее

Показать сообщение отдельно
Damaks
18 / 10 / 1
Регистрация: 02.09.2010
Сообщений: 235

Потокобезопасен ли префиксный инкремент/декремент? - C++

13.03.2012, 22:05. Просмотров 1217. Ответов 10
Метки (Все метки)

Потокобезопасен ли префиксный инкремент/декремент?
Например такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Объявляем глобальную переменную
uint64_t i=0;
 
// Тут множество потоков thread:
thread {
 
    while(1) {
        // Тут какое-то ожидание
        sleep();
        if(ххх1) ++i; // Увеличиваем если условие ххх1 верно
        if(ххх2) --i; // Уменьшаем если условие ххх2 верно
    }
}
 
 
int main(int argc, char *argv[]) {
    // Запускаем множество потоков thread 
 
    while(х<n) {
        run thread x;
    }
 
    while(1) {
        // Тут какое-то ожидание
        sleep();
        if(ххх1) ++i; // Увеличиваем если условие ххх1 верно
        printf("Текущий результат: %i\r", i);
    }
}
Вот приблизительно такая структура программы. Переменную i могут инкрементировать и декрементировать сразу множество потоков.
Вопросы:
Потокобезопасно ли это, или в любой момент я могу получить в i неверное значение?
Если нет, то как с наиминьшими затратами сделать операцию потокобезопасной?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru