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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ автоматическое нажатие ЛКМ http://www.cyberforum.ru/cpp/thread420574.html
Доброго времени суток! кто сможет помочь? нужно написать программу или скрипт, чтоб имитировать нажатие левой кнопки мыши через каждые 10 секунд в одном и том же месте мыши! заранее благодарю кто может помочь!
C++ Нужен эмулятор диспечера задач. Ребят,помогите,пожалуйста,может у кого завалялся эмулятор диспечера задач на С/С++,очень надо. Нужно,что бы он создавал процесс,вводил его в состояние ожидания/выполнения и закрывал. Не откажусь от любой помощи,forever love <3. http://www.cyberforum.ru/cpp/thread419470.html
C++ Excel Automation in C++
Коллеги, прошу помощи! Нужен пример рабочего С++ кода, который делает следущее: - конектится к работающему в настоящий момент Excel; если Excel не запущен, то кидает exception; - конектится к текущему worksheet; если worksheet отсутствует, то кидает exception; - если все приконектилось удачно, читаем значение любой ячейки, например первый столбец/первая строка. Конектиться надо к любому...
C++ Совместимость кода Code Composer Studio (CCS) с C/C++
С преподавателем друг друга не поняли. Как результат, прихожу с честно сделанными в Паскале лабами под занавес года, а он мне встречный подарок: "раз ты так редко ходишь, то почему не сделал лабы в CCS?". В общем логика железная. Пошел гуглить что это за CCS. А вся группа вовсе не делала этих лаб, преподаватель засчитал им работу на парах. Грустно, а последний зачет у меня остался. Информации...
C++ Как получить TID текущего потока? (библиотека pthread, компилятор g++ 4.6.1 открытый вопрос niXmanу) http://www.cyberforum.ru/cpp/thread418032.html
Да, как? #include <windows.h> #include <pthread.h> #include <stdio.h> #include <stdlib.h> void *BusyWork(void *t) { printf("TID= %x\n", pthread_self()); printf("TID= %x\n", (unsigned int)GetCurrentThreadId ()); return NULL;
C++ Высота бинарного дерева поиска Что неправильно в программе? Полное условие #include <iostream> #include <cstdio> #pragma comment (linker, "/stack:250000000") using namespace std; подробнее

Показать сообщение отдельно
Димонез
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 18
07.01.2012, 11:51  [ТС]     Критическая секция
ну допустим вот, и то не особо уверен в правильности
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <time.h>
#include <conio.h>
#define MAX_AVTO 5
using namespace std;
 
class CKolonka;
CRITICAL_SECTION forkCriticalSection[MAX_AVTO];
HANDLE hPhilThread[MAX_AVTO];
DWORD uThreadIDs[MAX_AVTO];
CKolonka* pkol[MAX_AVTO];
 
class CKolonka{
public:
        CKolonka() { iHungry=0; }
        int iHungry;
        int iNum;
        
        bool eat()
        {
                if( (pkol[(iNum+1)%5]->iHungry) <= iHungry && (pkol[(iNum+4)%5]->iHungry) <= iHungry )   
                {
                        if (TryEnterCriticalSection(&forkCriticalSection[iNum]))
                        {
                                EnterCriticalSection(&forkCriticalSection[iNum]);
                                cout << "Kolonka  " << iNum  << ": Ya zapravlyayu mashinu nomer " << iNum << endl;
                                if (TryEnterCriticalSection(&forkCriticalSection[(iNum+1)%5]))
                                {
                                        EnterCriticalSection(&forkCriticalSection[(iNum+1)%5]);
                                        cout << "Kolonka  " << iNum << ": Ya zapravlyayu mashinu nomer " << ((iNum + 1)%5) << endl;
                                        cout << "Kolonka  " << iNum << ": Ya zapravlyayus " << endl;
 
                                        Sleep(300);
 
                                        LeaveCriticalSection(&forkCriticalSection[(iNum+1)%5]);
                                        cout << "Kolonka  " << iNum  << ": Ya zapravil mashinu nomer " << ((iNum+1)%5) << endl;
                                        LeaveCriticalSection(&forkCriticalSection[iNum]);
                                        cout << "Kolonka  " << iNum  << ": Ya zapravil mashinu nomer " << iNum+1 << endl;
                                        return true;
                                } 
                                else 
                                {
                                        cout << "Kolonka " << iNum << ": Ya ne mogu zapravit mashinu nomer " << ((iNum + 1)%5) << endl;
                                        LeaveCriticalSection(&forkCriticalSection[iNum]);
                                        return false;
                                }
                        }
                }
        };
};
 
 
void body(LPVOID lpParam)
{
        CKolonka* iFilos;
        iFilos = (CKolonka*)lpParam;
        srand(time(NULL));
        while (1)
        {
                if (!(iFilos->eat()))
                {
                        (iFilos->iHungry)++;
                        
                        Sleep(rand()%3000);
                }
                else
                {
                        iFilos->iHungry = 0;
                        
                        Sleep(rand()%3000);
                }
        }
};
 
 
int _tmain(int argc, _TCHAR* argv[])
{
        srand(time(NULL));
 
        for ( int i = 0; i < 5; i++ )
        {
                InitializeCriticalSection( &forkCriticalSection[i] );
                pkol[i] = new CKolonka;
        }
        
        for ( int i = 0; i < 5; i++ )
        {
                pkol[i]->iNum = i;
                hPhilThread[i] = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)body,pkol[i],0,&uThreadIDs[i]);
        }
 
        _getch();
        for ( int i = 0; i < 5; i++ )
        CloseHandle(hPhilThread[i]);
        return 0;
}
 
Текущее время: 01:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru