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

не решается задача по параллельному программированию - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Одномерные массивы(функции) http://www.cyberforum.ru/cpp-beginners/thread962543.html
Даны 3 одномерных массива разной длины. Какие массивы после перестановки первого и последнего элементов станут отсортированными по убыванию. Нужно решить при помощи функций.
C++ Нахождение минимума/максимума в конкретной строке или столбце Ребят, подскажите пожалуйста, я забыл как находить минимальный/максимальный элемент в конкретной строке/столбце. Подправьте код, а то программка находит максимальный во всем массиве, а мне надо например в 4 строке найти его. #include <iostream> using namespace std; const int S = 5; const int C = 4; int main() { system("chcp 1251 > nul"); int mas; int max, min; http://www.cyberforum.ru/cpp-beginners/thread962540.html
C++ Есть ли возможность выполнять цикл некоторое время
Существует ли в С++ возможность выполнять цикл,скажем,ровно 15 секунд,или таковой возможности нету? Варианты вроде while (clock()-t1<(CLOCKS_PER_SEC*15)) Не предлагать :-)
Ленточный разреженный массив С++ C++
Нужно заполнить матрицу так, чтобы числами были заполнены главная диагональ, и хотя бы 2 параллельные ей( сверху и снизу), а все остальные элементы 0. Диагональ заполнить не проблема, а вот параллельную ей сверху и снизу... Прошу помощи :)
C++ Структура в стеке. Не работает ф-ия renumber http://www.cyberforum.ru/cpp-beginners/thread962511.html
Моя задача Создать стек для сохранения строк файла. ** С помощью стандартного ввода / вывода (stdio.h) считать текстовый файл по строкам (как в части 1) и записать его содержание в стек. * К каждой записи (рядка!) в стеке добавить в начале строки номер этой строки. Например, чтобы выглядело так: 1: первая строка 2: вторая строка ** Вывести содержимое стека на экран и одновременно...
C++ Вывести на экран числа в виде следующей таблицы Ребятки помогите с решением задачки что полегче решилось сразу,а тут совсем без идей( Вывести на экран числа в виде следующей таблицы 8 7 7 7 6 6 6 6 6 5 5 5 подробнее

Показать сообщение отдельно
liloracle
1 / 1 / 0
Регистрация: 23.04.2013
Сообщений: 11
26.09.2013, 21:16  [ТС]     не решается задача по параллельному программированию
Цитата Сообщение от Убежденный Посмотреть сообщение
Инкремент/декремент в C++ - это неатомарная операция.
Если два или больше потоков параллельно инкрементируют переменную,
итоговое ее значение может отличаться от ожидаемого.
Происходит это потому, что инкремент даже на уровне CPU - операция
"трехфазная": а) прочитать значение; б) увеличить на 1; в) записать обратно.

Вот реальный пример "гонок" между потоками:
Есть переменная int, начальное значение 0. Первый поток прочел переменную
(старое значение, 0) и тут же второй сделал то же самое (у него тоже 0), потом
они оба увеличили считанное значение (у обоих теперь 1) и записали его обратно.
Получается, что в результате двухкратного инкремента значение переменной стало
равным 1. А должно быть 2.

Функция InterlockedIncrement, напротив, ставит барьер, запрещая другим CPU
модифицировать данные, пока не будет выполнен инкремент.
Поэтому с ней многопоточный инкремент всегда будет выдавать ожидаемый результат.
я понял о чем речь идет...
гонка данных нам так называли.

а сам код то в принципе верный?
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru