Форум программистов, компьютерный форум, киберфорум
Наши страницы

Пауза FindFirstFile - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перевод кода с паскаля на C++ http://www.cyberforum.ru/cpp-beginners/thread603953.html
Первая: uses crt; var d: string; a: string = ('0123456789'); i,j,k: byte; begin clrscr;
C++ Задача на с++ на матрицы Заполнить квадратную таблицу размером n*n последовательными целыми числами от 1 до n2, расположенными по спирали, начиная с левого верхнего угла и продвигаясь по часовой стрелке. Добавлено через... http://www.cyberforum.ru/cpp-beginners/thread603952.html
Разработать линейный алгоритм для решения указанной задачи C++
Разработать линейный алгоритм для решения указанной задачи; написать соответствующую программу; придумать набор исходных данных и доказать правильность проведённых вычислений. Задача: Длина...
Ошибка с конструктором копирования C++
В коде в строках 59 и 60 компилятор выдает ошибку:No matching function for call to `SimpleCircle::SimpleCircle(SimpleCircle)' candidates are: SimpleCircle::SimpleCircle(SimpleCircle&) ...
C++ Обнулить элементы строки, в которой находится минимальный элемент http://www.cyberforum.ru/cpp-beginners/thread603917.html
Дана целочисленная квадратная матрица размера n. Найти максимальный элемент, минимальный элемент из столбца с максимальным элементом и обнулить строку в которой нашли минимум. Первые 2 условия я...
C++ В матрице найти максимальный элемент каждой строки В матрице размером m*n найти максимальный элемент каждой строки. Результат получить в виде вектора размером n. #include <iostream> using namespace std; const int m=5,n=4; int main() { ... подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
12.06.2012, 22:38
Mustang92, собственно писал срузу здесь в редакторе, но в целом логика и вызовы верны. Вот некая абстрагированая реализация организации нити поиска и проверки нажатия нужного ключа в основном потоке для NT-платформы. Распараллеливание, как видишь, реализовал через Критическую секцию. Для её поддержки проект должен содержать process.h а также в опциях линковщика выставить поддержку run-time library Multythreaded
Собственно код ниже
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
CRITICAL_SECTION cs;//Должна быть объявлена как глобальный параметр
WIN32_FIND_DATA * FindFiles(WIN32_FIND_DATA * pDATA, long *nFiles,BOOL bSTOP)
{
    //начинку мы пишем свою важны лишь флаг
}
 
typedef 
{
     WIN32_FIND_DATA * pDATA;
     char * szDIR;
     long    nFiles;
     BOOL bSTOP;
}THREAD_PARAM;
 
void ThreadSearch(PVOID pParam)
{
     THREAD_PARAM pPARAM = (THREAD_PARAM *)pParam;
     while(!pPARAM.bSTOP)
     {
           EnterCriticalSection(&cs);//Входим в критическую секцию
          //Вызов нашей ркурсивной функции поиска
           pPARAM.pDATA = FindFiles(pPARAM.pDATA, &pPARAM.nFiles,pPARAM.bSTOP);
           LeaveCriticalSection(&cs);//покидаем критическую секцию
     }
     _endthread();
}
     
int main()
{
     char szSTARTPATH[MAX_PATH] = {0};
     
     InitializeCriticalSection(&cs);
     THREAD_PARAM pPARAM = {0};
     //вводим pPARAM.szDIR
     _beginthread(ThreadSearch,0,&pPARAM);//Создали нить для поиска
     BOOL bSTOP = FALSE;
     while(!bSTOP)
     {
           EnterCriticalSection(&cs);//Входим в критическую секцию
           //Каки либо образом проверяем состояния ключа для останова (паузы)
           //Состояние данного ключа должно влиять на флаг bSTOP
           pPARAM.bSTOP = bSTOP;
           LeaveCriticalSection(&cs);//покидаем критическую секцию
     }
     //Дальнейшая обработка структуры pPARAM
     //(она будет содержать список найденный структур WIN32_FIND_DATA)
     DeleteCriticalSection(&cs);//Удаляем критическую секцию
     return 0;
}
Проверка ключей может выполнена не чере getch как это мы часто делаем а через GetAsyncKeyState, за справкой ходи сюда МойБлог : Стрелки в консоли
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru