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

проверьте, пожалуйста, мой первый код на c++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ C++ перегрузка операторов http://www.cyberforum.ru/cpp-beginners/thread93485.html
Здраствуйте! Программа писать надо чтобы работало a=b=c и (a=b)=c. с уважением
C++ Дана целочисленная квадратная матрица Дана целочисленная квадратная матрица. Определить произведение элементов в тех строках, которые не содержат отрицательные элементы Если можно напишите, пожалуйста, всю программу а не кусок программы!!!! http://www.cyberforum.ru/cpp-beginners/thread93471.html
Определить максимальный элемент из минимальных значений строк массива C++
В языке не волоку... Если кто-нибудь поможет решить задачу, большое спасибо тому человеку... А задача такая: Дана матрица целых чисел размерностью 5 на 5. Определить максимальный элемент из минимальных значений строк этого массива.
Функции с++ C++
#include <iostream> #include <conio.h> #include <math.h> #include <iomanip> #include <time.h> using namespace std; double x(int i,double (&a)) {
C++ Разреженный массив http://www.cyberforum.ru/cpp-beginners/thread93446.html
Есть ли где ещё, кроме как у Герберта Шилдта, рекомендации по разработке классов разреженных массивов?
C++ Подсчитать количество слов, начинающихся с буквы “a” Подсчитать количество слов, начинающихся с буквы “a”.?? помогите с решением.. подробнее

Показать сообщение отдельно
SkyN
1 / 1 / 0
Регистрация: 08.02.2010
Сообщений: 16

проверьте, пожалуйста, мой первый код на c++ - C++

08.02.2010, 13:31. Просмотров 945. Ответов 9
Метки (Все метки)

Переучиваюсь с Delphi на C++
Посмотрите, пожалуйста, корректность, стиль программирования, и т.п. с точки зрения visual c++
Если бы этот код достался Вам на поддержку, что Вам не понравилось бы?
locker.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#pragma once
 
// реализация блокировщика, который функционирует подобно критическим секциям
// но позволяет указывать максимальное время ожидания блокировки
class LOCKER
{
private:
    HANDLE  m_Mutex;            // Mutex используемый для блокировок
    int     m_DeadlockTime;     // максимально время ожидания блокировки
    LONG    m_RecursionCount;   // счетчик рекурсии (сколько раз вызывался lock из текущего потока)
    LONG    m_Thd;              // заблокировавший поток
public: 
    void lock();
    void unlock();
    LOCKER(const int pDeadlockTime); // параметр, максимальное время ожидания блокировки
    ~LOCKER();
};
locker.cpp
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
#include "stdafx.h"
#include "windows.h"
 
#include "locker.h"
 
//пока заглушки
void trace(const char*){return;}
void error(const char*){return;}
 
LOCKER::LOCKER(const int pDeadlockTime)
{
    m_Mutex = CreateMutex(0, FALSE, 0);
    m_RecursionCount    = 0;
    m_Thd               = 0;
    m_DeadlockTime  = pDeadlockTime;
    trace("LOCKER::LOCKER");
}
 
LOCKER::~LOCKER()
{
    CloseHandle(m_Mutex);
    trace("LOCKER::~LOCKER");
}
 
void LOCKER::lock()
{
    LONG CurThd = GetCurrentThreadId();
    // блокировка осуществленна текущим потоком?
    if ( InterlockedCompareExchange(&m_Thd, 0, 0 ) == CurThd)
    {
        m_RecursionCount++;
        trace("LOCKER::lock рекурсия++");
    }
    else
    {
        trace("LOCKER::lock пытаюсь заблокировать Mutex");
        if (WAIT_OBJECT_0 == WaitForSingleObject(m_Mutex, m_DeadlockTime)) 
        {
            if (m_Thd != 0) error("LOCKER::lock (Thd!=0) чего быть не должно");
            m_Thd = CurThd;
            m_RecursionCount++;
            trace("LOCKER::lock lock");
        }
        else error("LOCKER::lock Deadlock");
    }
}
 
void LOCKER::unlock()
{
    if (GetCurrentThreadId() == m_Thd)
    {
        trace("LOCKER::unlock рекурсия--");
        if (0 == (--m_RecursionCount) )
        {
            trace("Освобождаю блокировку");
            m_Thd = 0;
            ReleaseMutex(m_Mutex);
        }
    } 
    else error("Пытаюсь освободить, хотя блокировки небыло, или была не из этого потока");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru