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

Пауза 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, расположенными по спирали, начиная с левого верхнего угла и продвигаясь по часовой стрелке. Добавлено через 12 минут от 1 до n в квадрате http://www.cyberforum.ru/cpp-beginners/thread603952.html
Разработать линейный алгоритм для решения указанной задачи C++
Разработать линейный алгоритм для решения указанной задачи; написать соответствующую программу; придумать набор исходных данных и доказать правильность проведённых вычислений. Задача: Длина отрезка задана в дюймах (1 дюйм = 2,54 см). Выразить длину в метрах, сантиметрах и миллиметрах. Пример: 21 дюйм = 0 м 53 см 3,4 мм препод просит что каждая строчка была расписана так // это...
Ошибка с конструктором копирования C++
В коде в строках 59 и 60 компилятор выдает ошибку:No matching function for call to `SimpleCircle::SimpleCircle(SimpleCircle)' candidates are: SimpleCircle::SimpleCircle(SimpleCircle&) SimpleCircle::SimpleCircle(int).#include<iostream> #include<conio.h> using namespace std; class SimpleCircle { public: SimpleCircle();
C++ Обнулить элементы строки, в которой находится минимальный элемент http://www.cyberforum.ru/cpp-beginners/thread603917.html
Дана целочисленная квадратная матрица размера n. Найти максимальный элемент, минимальный элемент из столбца с максимальным элементом и обнулить строку в которой нашли минимум. Первые 2 условия я выполнила, а вот как осуществить обнуление строки с минимумом не понимаю:( #include <stdio.h> #include <stdlib.h> #include <time.h> #define N_MIN -4 #define N_MAX 99 int main(int argc, char *argv){...
C++ В матрице найти максимальный элемент каждой строки В матрице размером m*n найти максимальный элемент каждой строки. Результат получить в виде вектора размером n. #include <iostream> using namespace std; const int m=5,n=4; int main() { int mas; for(int i=0;i<m;i++) подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
12.06.2012, 22:38     Пауза FindFirstFile
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, за справкой ходи сюда МойБлог : Стрелки в консоли
 
Текущее время: 15:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru