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

Потоки и приоритеты - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ С++ Указатели. http://www.cyberforum.ru/cpp-beginners/thread117676.html
1. Строки массива А(N,M), не содержащие положительных элементов, заменить нулевыми элементами. 2.Строки массива А(N,M), не содержащие положительных элементов, заменить нулевыми элементами. Может кто-нибудь поспособствовать решению? з.ы. Нужно 4 программы: 2 в статике, 2 в динамике.
C++ Удалить повторяющиеся слова в строке Здравствуйте! Как удалить из строки типа char, введенной с помощью cin.getline(buf, 80), одинаковые слова (слова могут быть разделены одним или несколькоми пробелами и знаками табуляции)? В полученной строке слова должны быть разделены только одним пробелом. Можно записать неповторяющиеся слова в новую строку. Но я что-то не могу понять как это сдалать((. Помогите, кто знает :) Добавлено... http://www.cyberforum.ru/cpp-beginners/thread117633.html
C++ Напечатать треугольник Паскаля — таблицу биномиальных коэффициентов
дано целое неотрицательное число K. Напечатать треугольник Паскаля - таблицу биномиальных коэффициентов (C из m по n) для всех возможных целых значений m и n(0<=m<=n<=K)
C++ Програма генерирующая массив
Написать программу на языках С и , которая генерирует массив, содержащий 40 целых случайных значений из заданного набора (при выводе элементов массива на экран располагает значения в 5 столбцов). Диапазон значений и количество элементов массива задать как символьные константы. Набор значений: 10, 20, 30, 40, 50. Помогите с масивом на языке "С". Буду крайне благодарен.
C++ Перезагрузить функции http://www.cyberforum.ru/cpp-beginners/thread117615.html
Задание Перезагрузить функции для разных типов входных данных, или создать шаблоны функций, или переопределить операции для отмеченных пользователем типов (новые типы задавать в виде структур). Перезагрузить операции “<<”, “>>” для вводу и вывода транспонированных целых и действительных матриц размерностью nxm.
C++ Определить количество классов эквивалентных столбцов данной прямоугольной матрицы. Столбцы считать эквивалентными, если равны множества их элементов. подскажите пожалуйста!!!на СИ Определить количество классов эквивалентных столбцов данной прямоугольной матрицы. Столбцы считать эквивалентными, если равны множества их элементов. подробнее

Показать сообщение отдельно
st_kastiel
0 / 0 / 0
Регистрация: 16.04.2010
Сообщений: 14
16.04.2010, 19:58     Потоки и приоритеты
Привет всем кто увидит это сообщение))) вот мое задание и код программы, если увидите что то не правильно подскажите пожалуйста=) так вот у меня такой вопрос... как подсчитать время выполнение потока))) скажите пожалуйста, а то целый день не могу разобраться(((

задание.
Разработать программу для вычисления полного количества секунд, прошедших между двумя значениями времени. Значение времени – это строки вида ЦЦ.ЦЦ.ЦЦ, где Ц – это любая цифра из диапазона [0-9]. Вычисление разницы между временами оформляется как функция потока. Сначала осуществляется ввод значений времени, затем запускается поток, и далее – результат выводится на экран. Запустить программу два раза: первый раз с приоритетом потока THREAD_PRIORITY_NORMAL, второй – THREAD_PRIORITY_LOWEST, и вывести на экран значения времени работы потока.

код

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
99
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <iostream>
#include <conio.h>
using namespace std;
 
int h,m,s,h1,m1,s1, sum1,sum2,rez;
 
 
DWORD WINAPI fpot(LPVOID iNum)
{
    rez=sum2-sum1;
    return rez;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    HANDLE hThread;
    DWORD IDThread;
    
    cout<<"Введите первое значение времени ЧЧ:ММ:СС\n";
point:
    cin>>h>>m>>s;
        if ( ((m||s)>60) || ((m||s)<0) || (h>24) || (h<0) )
        {
            cout<<"Некорректное значение времени, введите корректно\n";
            goto point;
        }
 
    sum1=(s+(h*3600)+(m*60));
 
    cout<<"Первое значение времени в секундах:"<<sum1<<"\n\n";
 
    cout<<"Введите второе значение времени ЧЧ:ММ:СС\n";
 
point2:
 
    cin>>h1>>m1>>s1;
 
        if ( ((m1||s1)>60) || ((m1||s1)<0) || (h1>24) || (h1<0) )
        {
            cout<<"Некорректное значение времени, введите корректно\n";
            goto point2;
        }
 
    sum2=(s1+(h1*3600)+(m1*60));
 
    cout<<"Второе значение времени в секундах: "<<sum2<<"\n\n";
 
    hThread = ::CreateThread(NULL, 0, fpot, 0, CREATE_SUSPENDED, &IDThread);
    if( hThread == NULL)
        return GetLastError();
    else cout<<"Поток создан\n";
 
        // созданному потоку устанавливается приоритет HIGHEST
    ::SetThreadPriority(hThread // дескриптор первого потока
                        , THREAD_PRIORITY_NORMAL  // уровень приоритета
                                                    );
 
    // выполнение потока в данном случае вызовом функции возобновления
::ResumeThread(hThread);
cout<<"Поток запущен с приоритетом: THREAD_PRIORITY_NORMAL \n\n";
 
    cout<<"Тaблицa 1 Стaндaртные знaчения приoритетa пoтoкa числoвoе знaчение\n\n";
                cout<<" THREAD_PRIORITY_TT.ME_CRITT.CAL 15\n";
                cout<<" THREAD_PRIORITY_HIGHEST 2\n";
                cout<<" THREAD_PRIORITY_ABOVE_NORMAL 1\n";
                cout<<" THREAD_PRIORITY_NORMAL 0\n";
                cout<<" THREAD_PRIORITY_BELOW_NORMAL -1\n";
                cout<<" THREAD_PRIORITY_LOWEST -2\n";
                cout<<" THREAD_PRIORITY_IDLE -15\n\n";
    cout<<"Приоритет потока равен: "<<GetThreadPriority(hThread)<<"\n\n";
 
 
    //ждем пока поток fpot закончит работу
    WaitForSingleObject(hThread, INFINITE);
    // закрываем дискриптор потока fpot
    CloseHandle(hThread);
 
    cout<<"Разница между первым и вторым значениями времени в секундах:"<< rez<<"\n";
 
    const int NANOSECOND_BLOCKS_IN_MILLISECOND = 10000;
    FILETIME threadStart; // начало работы потока
    FILETIME threadEnd; // окончание работы потока
    FILETIME dummy; // неиспользуемое значение
    ::GetThreadTimes(hThread
        , &threadStart
        , &threadEnd
        , &dummy
        , &dummy );
// вывод значения времени работы потока в миллисекундах,
// при этом выполняются преобразования.
// Внимание! Сравниваются только нижние части структуры FILETIME
::printf("Поток выполнился за %d милисекунд.\t", (threadEnd.dwLowDateTime - threadStart.dwLowDateTime)/ NANOSECOND_BLOCKS_IN_MILLISECOND
);
    getch();
    return 0;


вот вроде считает время... но пишет 0((( почему незнаю(((

Добавлено через 1 час 23 минуты
Ну пожалуйста хоть кто нибудь объясните как посчитать время нормально???)))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru