Форум программистов, компьютерный форум 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
Пес войны
 Аватар для NeonLost
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
21.07.2014, 07:40     Deadlock и racecondition проверить код
класс принимает функцию и количество потоков...и все время поддерживает одновременное выполнение 10 потоков этой функции...интересуют ошибки связанные с многопоточным программированием...может еще подскажите как лучше сделать?..)

заголовочный файл
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class gthread
{
    typedef void (*pFunc) ();
public:
    gthread(pFunc func, unsigned short int, unsigned short int);
    ~gthread();
    void start();
    void stop();
private:
    pFunc _func;
    std::mutex _mut;
    unsigned short int _threadCounter;
    unsigned short int _threadNumber;
    unsigned short int _breakTime; //milliseconds
    bool _condition;
    void invoker();
    void abuse();
};
срр файл
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
void gthread::invoker()
{
    (_func)();
}
 
gthread::gthread(pFunc func, unsigned short int threadNumber, unsigned short int breakTime = 100 )
{
    _func= func;
    _threadNumber = threadNumber;
    _threadCounter = 0;
    _breakTime = breakTime;
    _condition = true;
}
 
gthread::~gthread()
{
}
 
void gthread::start()
{
    std::thread abuser(&gthread::abuse, this);
    abuser.detach();
}
 
void gthread::abuse()
{
    while(_condition)
    {
        while(_threadCounter<_threadNumber) 
        {
            std::async([this]
            {
                _mut.lock();
                _threadCounter++;
                _mut.unlock();
                std::thread t(&gthread::invoker, this);
                t.join();
                _mut.lock();
                _threadCounter--;
                _mut.unlock();
            });
        }
        std::this_thread::sleep_for(std::chrono::milliseconds(_breakTime));
    }
}
 
void gthread::stop()
{
    _condition = false;
}
тест
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void StartThread()
{
    //std::this_thread::sleep_for(std::chrono::milliseconds(1000));
        cout<<std::this_thread::get_id()<<endl;
}
 
int main()
{
    gthread q(&StartThread, 10);
    q.start();
    std::this_thread::sleep_for(std::chrono::seconds(100));
    q.stop();
    getchar();
    return 0;
}
Добавлено через 6 часов 55 минут
особенно интересны строки 30-40...)
так вроде все работает...)

Добавлено через 10 часов 39 минут
ну хоть кто-нибудь...)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru