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

Проход критической секции кода - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ повторить введенные символы, за исключением десятичных символов http://www.cyberforum.ru/cpp-beginners/thread1005178.html
#include "stdafx.h" #include <iostream> #include <string> int _tmain(int argc, _TCHAR* argv) { setlocale(LC_ALL, "Russian"); std::cout << "Введите символы: "; char ch;
C++ Функция void Составить функцию типа void для решения представленной ниже задачи: Определить является ли число простым. формальные параметры - число и признак, который равен 1,если число простое, и 0, если иначе. Вот мой код ,но он как-то неправильно работает с двузначными числами: #include <iostream> #include <math.h> using namespace std; void F1(int n) { float end = sqrt((float)n); http://www.cyberforum.ru/cpp-beginners/thread1005172.html
Ошибка в Dev-C++ : Build Error Error 1 C++
Ошибка в Dev-C++ : Build Error Error 1 Вод сам код: #include <iostream> #include <stdlib.h> using namespace std; int main(int argc, char *argv)
C++ Не удается в главной программе уладить противоречия с указателями и адресами
Доброго времени суток,у меня есть почти готовая программа, но у меня проблемы с указателями и адресами. Все ф-ии вроде написаны правильно, но проблемы в main. Делала, но не доделала. Описать полиморфные функции, принимающие своим параметрам указатели на интерфейс 2: функции-операции сдвига для потокового ввода / вывода,использующий интерфейс с преобразованием объекта в строку и наоборот. ...
C++ Создать класс Vektor http://www.cyberforum.ru/cpp-beginners/thread1005144.html
Помогите, не пойму как делать. Разработать класс Vector – геометрический вектор произвольной размерности (размерность задается в конструкторе вектора). Реализовать метод доступа к элементам вектора. Реализовать операции сложения, вычитания и скалярного произведения векторов, а также нахождение модуля вектора.
C++ Функции. Вложенные циклы Добрый вечер! Помогите пожалуйста перевести задачу с C# на С++ Условие: Даны целые числа m, a1... a20. Найти три натуральных числа i, j, k, каждое из которых не превосходит двадцати, такие что ai+aj+ak=m. Если таких чисел нет, сообщить об этом. Код: int fun(int a, int m) { int len = a.Length, i, j, k; подробнее

Показать сообщение отдельно
slavikk07
3 / 3 / 0
Регистрация: 27.02.2013
Сообщений: 62
12.11.2013, 03:33     Проход критической секции кода
Здравствуйте, мне нужно реализовать критическую секцию кода, которую все потоки проходят строго последовательно и поочередно. Как минимум, в критическую секцию кода нужно поместить печать сообщения - какой поток зашел в критическую секцию и подсчет числа посещений этой секции кода.

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <windows.h>
#include <stdlib.h>
#include <assert.h>
#include <iostream>
 
using namespace std;
 
CRITICAL_SECTION CS;  //общая структура
 
volatile int Count=0;
const int MaxCount=10;
int i;
 
// главный поток
void ThreadMain(char *name)
{
    while(Count < MaxCount)
    {
        EnterCriticalSection(&CS);
 
        // критическая секция кода
        cout << "'" << name << "'" << " находится в критической секции кода\n";
        if (name == "Поток №1") i++;
        //cout << &CS;
        Count++;
        Sleep(200);
 
        LeaveCriticalSection(&CS);
    }
}
 
 
// дочерний поток
HANDLE CreateChild(char *name)
{
    HANDLE hThread; 
    DWORD dwId;
    hThread=CreateThread(NULL,0,
                        (LPTHREAD_START_ROUTINE)ThreadMain,
                        (LPVOID)name,0,&dwId);
    assert(hThread!=NULL);
    return hThread;
}
 
 
int main(void)
{
    HANDLE hT[5];
    InitializeCriticalSection(&CS);
 
    cout << "Запуск..." << endl;
    Sleep(200);
 
    // создание дочерних потоков
    hT[0]=CreateChild("Поток №1"); 
    hT[1]=CreateChild("Поток №2");
    hT[2]=CreateChild("Поток №3"); 
    hT[3]=CreateChild("Поток №4");
    hT[4]=CreateChild("Поток №5");
 
    WaitForMultipleObjects(5,hT,TRUE,INFINITE);
    cout << "Завершено!" << endl;
 
    CloseHandle(hT[0]); 
    CloseHandle(hT[1]);
    CloseHandle(hT[2]);
    CloseHandle(hT[3]);
    CloseHandle(hT[4]);
 
    DeleteCriticalSection(&CS);
    return 0;
}
мне осталось сделать подсчёт сколько раз каждый поток проходить критическую секцию кода... что то я не придумаю как это реализовать ПОМОГИТЕ ПОЖАЛУЙСТА)))

Добавлено через 2 минуты
Цитата Сообщение от slavikk07 Посмотреть сообщение
if (name == "Поток №1") i++;
так не получается...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru