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

Deadlock и racecondition проверить код - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Каким образом реализуется квалификатор const? http://www.cyberforum.ru/cpp-beginners/thread1230979.html
Каким образом реализуется квалификатор const? Хранится ли в памяти в процессе выполнения программы какая либо информация по этому поводу(например что данные константны)?
C++ Автоматическое добавление dll в проект при сборке в CodeBlocks и Eclipse CDT Хочу, чтобы при сборке необходимые библиотеки автоматически помещались в директорию с скомпилированным исполняемым файлом. Как это сделать в Code::Blocks и Eclipse CDT, если это вообще возможно? http://www.cyberforum.ru/cpp-beginners/thread1230961.html
C++ Сформировать массив содержащий количество денежных знаков на указанную сумму
Заданы значения элементов двух целочисленных массивов и некоторое число. Первый массив содержит номиналы денежных знаков (по убыванию), а второй - их количество в касс. Сформировать массив содержащий количества денежных знаков необходимых для выдачи из кассы указанной суммы. Вывести этот массив или сообщение поясняющее причину невозможности выдачи указанной суммы. Размер массивов не более 10....
C++ Вывод wstring в файл
bool addCategory(const std::wstring& name_category) { wfstream fio = initAndCheckWFSTREAM(FILENAME_CATEGORY, ios_base::app | ios_base::out); // инициализация fio (своя функция с некоторыми особенностями) if (isFileEmpty(FILENAME_CATEGORY)) fio << ":\n"; fio << name_category << "\n"; return true;
C++ Debug Assertion Failed http://www.cyberforum.ru/cpp-beginners/thread1230894.html
Ошибка. Не могу понять что не так. Как я понял с дебагера, проблема во втором освобождении памяти. Вообщем хелп ми) // hw_3.cpp : Defines the entry point for the console application. // Пользователь вводит строки пока не надоест #include "stdafx.h" #include <iostream> #include <iomanip>
C++ Где найти описание типа IHTMLWindow7? Здравствуйте, у меня такая проблема - есть IWebBrowser2 и я могу подтягивать без проблем любые интерфейсы из http://msdn.microsoft.com/en-us/library/hh801967(v=vs.85).aspx кроме (IHTMLWindow7 http://msdn.microsoft.com/en-us/library/ff975210(v=vs.85).aspx) он даже не описан в Mshtml.h - в чем может быть проблема ? Если кого не затруднит посмотрите у себя в фале C:\Program Files\Microsoft... подробнее

Показать сообщение отдельно
NeonLost
Пес войны
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
21.07.2014, 21:00  [ТС]
Верное замечание. Не рекомендуется вызывать непосредственно функции lock и unlock свойства мьютекса. Используйте std::lock_guard. Хотя возможно в данном случае проще воспользоваться атомарным инкрементом и _threadCounter сделать атомарным типом?
Еще в конструкторе список инициализации уже не приемлим?
std::lock_guard тут не подойдет, если его поставить в самом начале функции, то он разлочит, когда она завершится...а на счет атомарности вы правы, спасибо...)
я не помню как сделать в списке инициаллизации значение по умолчанию...(

посмотреть в сторону пула потоков
возможно это верное решение...но я не уверен, что, например, росо::threadpool умеет выполнять такую задачу, хотя честно признаюсь ни разу не использовал...)

Добавлено через 9 минут
Цитата Сообщение от Ilot Посмотреть сообщение
Верное замечание. Не рекомендуется вызывать непосредственно функции lock и unlock свойства мьютекса. Используйте std::lock_guard. Хотя возможно в данном случае проще воспользоваться атомарным инкрементом и _threadCounter сделать атомарным типом?
Еще в конструкторе список инициализации уже не приемлим?
на самом деле я немного изменил код, чтоб быть точно уверенным, что поток запустится сразу после выполнения предыдущего, а не спустя какое-то время и не гоняя в холостую процессор...и надобность в этом мьютексе сразу отпала
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void gthread::abuse()
{
    while(_threadCounter<_threadNumber) 
    {
        _threadCounter++;
        std::async([this]
        {
            while(_condition)
            {
                std::thread t(&gthread::invoker, this);
                t.join();
            }
        });
    }
}
все же интересно на сколько это работает, и на сколько это велосипед...)
особенно интересно, нужно ли делать атомарной переменную _condition и что будет, если я из меин потока поменяю ее значение...)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru