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

Критические секции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Расстановка кораблей (морской бой) http://www.cyberforum.ru/cpp-beginners/thread921897.html
Доброго времени суток, при расстановке 2х палубных кораблей возникает проблема... При выборе точки уже занятой, система ломается и зацикливается. Как это можно исправить? Заранее спасибо #include <cstdlib> #include <iostream> using namespace std; bool f=true; bool z=true; int a=0, b=0, c=0, d=0;
C++ Игра Maze labirinth - не вижу начала игры Добрый вечер! Вопрос скорее по вижуал студио, хотя... // 8.15 sort.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include "conio.h" #include <string> http://www.cyberforum.ru/cpp-beginners/thread921875.html
C++ Найти номер по порядку элемента в векторе векторов
Подскажите, пожалуйста. Например, есть vector <vector<int> > k; а мне нужно найти номер по порядку элемента (a,b) в этом векторе векторов
C++ вывод гистограммы на экран
Добрый день, столкнулся с такой проблемой, не получается вывести гистограмму, заранее благодарен вот мой код #include <stdio.h> #include <stdlib.h> #include <limits.h> #include <graphics.h> int dr=DETECT, mod, err; initgraph(&dr,&mod," ");
C++ что показывает std::vector::max_size http://www.cyberforum.ru/cpp-beginners/thread921862.html
Returns the maximum number of elements that the vector can hold. но я щяс запускаю на ноутбуке с гигом оперативы for (int i=0; i<1E9; i++) myvector.push_back(i); естеественно залёт...к чему он тогда? нафиг не нужен? Добавлено через 7 минут ещё щяс меня кое-что разочаровало: #include <iostream> #include <vector> int main () {
C++ Рекурсивно определить сумму отрицательных элементов Задача.С клавиатуры вводится последовательность целых чисел, признак конца ввода 0. Рекурсивно определить сумму отрицательных элементов. Очень нужно.Вот немного написал. #include <stdio.h> #include <conio.h> int main() { int a; int sum = 0; подробнее

Показать сообщение отдельно
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,307
12.07.2013, 10:27     Критические секции
Цитата Сообщение от Kukurudza Посмотреть сообщение
При этом, если бы не было функции f1, то критические секции для f2 и f3 вообще не нужны, потому что логика внутри f2 и f3 устроена так, что конфликтов не возникает.
1. А вот это, кстати, отнюдь не факт. Если происходит модификация некоей переменной из разных потоков без синхронизации, то результаты могут быть очень-очень непредсказуемыми. (Более того, на разных компиляторах результат может быть разным!) В клиническом случае это может приводить к появлению в программе "плавающей" ошибки, которая проявляется только на оборудовании заказчика раз в месяц в и непредсказуемое время в зависимости от фазы Луны и положения кошкиного хвоста. Ситуация становится особенно пикантной на современных многоядерных машинах :-)

Если синхронизация критической секцией не устраивает, посмотри на заголовок <atomic>.

2. А вот так синхронизировать критической секцией
C++
1
2
3
4
5
6
7
void f1 {
    EnterCriticalSection
    очень много гомнокода1 по модификации f
    очень много гомнокода2 по модификации f
    очень много гомнокода3 по модификации f
    LeaveCriticalSection
}
нельзя. Причина: если паче чаяния в каком-то из блоков "очень много гомнокодаX по модификации f" вдруг вылетит исключение, - вуаля! критсекция останется навеки заблокированной, и никакая другая функция к выполнению этого "гомнокода" уже не придет никогда. Рано или поздно программа впадет в ступор. Рекомендую использовать объект-синхронизатор, владеющий критической секцией, и реализующий идиому RAII.
 
Текущее время: 06:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru