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

Потоки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ как создать "тип в типе" http://www.cyberforum.ru/cpp-beginners/thread247269.html
Всем, привет! Изучаю STL. Такая строчка кода list<int>:: interator it; вызвала у меня вопрос: а как мы можем сделать так, что бы в объекте (list<int>) мы могли определять тип (iterator) ? я...
C++ Дано натуральное число P. Определить все совершенные числа, не превосходящие P Дано натуральное число P. Определить все совершенные числа, не превосходящие P. после паскаля никак не въеду что к чему:( #include<stdio.h> ... http://www.cyberforum.ru/cpp-beginners/thread247259.html
C++ вопрос по System
Здравствуйте господа програмисты!вопрос такой-если мы знаем название папки,а про файл знаем только расширение можно написать вот так-System("c:\qwer\*.txt").а как написать тоже самое про папку если...
C++ Класс стека
нужна помаш в написание одной программы(задачи) вот сама задача: Задание: Реализовать и протестировать контейнерный класс динамической структуры данных, содержащей строки. Класс должен иметь...
C++ Считать с клавиатуры строку символов и записать ее в файл http://www.cyberforum.ru/cpp-beginners/thread247234.html
плизз киньте код
C++ размер окна или на весь экран Здравствуйте господа програмисты!я пишу в dev c++ for dos не мог ли бы вы подсказать как сделать определённый размер окна и если надо можно ли сделать на весь экран без кнопок закрыть свернуть и тд.... подробнее

Показать сообщение отдельно
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402

Потоки - C++

23.02.2011, 13:14. Просмотров 906. Ответов 1
Метки (Все метки)

Задание:
1.Отображение списка запущенных потоков.
2.Создание нового потока по запросу пользователя.(это у меня сделано и работает)
3.Завершение заданного потока по запросу пользователя.
4.Завершение работы с корректным завершением всех потоков. (это вроде тоже работает)
если можете подскажите как реализовать 1 и 3 пункт
3 пункт, мне кажется надо выполнять с помощью функции ExitCreate но я не могу понять как её вставить.

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
100
101
102
103
104
105
106
107
108
109
110
111
112
#include "stdafx.h"
#include "locale.h"
#include "iostream"
#include <windows.h>
#include <strsafe.h>
// std::vector<MYDATA>
#define MAX_THREADS 3
#define BUF_SIZE 256
int numthreads = 0;
int a, i;
 
using namespace std;
 
typedef struct _MyData 
{
    char val1; // Символ
    int val2; // число задержки
    bool active; // нужно ли завершаться
    DWORD threadId; //массив
 
} MYDATA, *PMYDATA;
 
    MYDATA threads[MAX_THREADS];
    PMYDATA pData;
    DWORD dwThreadId[MAX_THREADS];
    HANDLE hThread[MAX_THREADS]; 
  DWORD dwExitCode;
DWORD WINAPI ThreadProc( LPVOID lpParam ) 
{ 
    PMYDATA pData=(PMYDATA)lpParam;
  
    HANDLE hStdout;
    TCHAR msgBuf[BUF_SIZE];
    size_t cchStringSize;
    DWORD dwChars;
 
    hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    if( hStdout == INVALID_HANDLE_VALUE )
        return 1;
    StringCchPrintf(msgBuf, BUF_SIZE, TEXT("\nПараметры = %d, %d\n"), 
        pData->val1, pData->val2); 
    StringCchLength(msgBuf, BUF_SIZE, &cchStringSize);
    WriteConsole(hStdout, msgBuf, cchStringSize, &dwChars, NULL);
 
    for ( ;  ; )
    {
        printf("%c", pData->val1);
        Sleep(pData->val2);
    }
    return 0; 
} 
 void ViewMenu()
{
        cout << "\nCделайте свой выбор:\n";
        cout << "1.Отображение списка запущенных потоков.\n"<< endl;
        cout << "2.Создание нового потока по запросу пользователя.\n"<< endl;
        cout << "3.Завершение заданного потока по запросу пользователя.\n"<< endl;
        cout << "4.Завершение работы с корректным завершением всех потоков.\n"<< endl;
        cout << "Ваш Выбор: "<< endl;
        cin >> a;
 }
void ViewThreads() //вывод введеных потоков
 {
 
 }
void CreateNewThread()//ввод потоков. сделан///////////////////////////////////
{
   if(numthreads < MAX_THREADS)
    {
 
        pData = (MYDATA*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(MYDATA));
        if( pData == NULL )
            ExitProcess(2);
        pData->val1 = (char)('A'+numthreads);
        pData->val2 = (numthreads+1)*500;
        hThread[numthreads] = CreateThread( NULL, 0, ThreadProc, pData, 0, &dwThreadId[numthreads]);
        if (hThread[numthreads] == NULL)
            ExitProcess(numthreads);
        numthreads++;
    }
}
 
void DeleteLastThread() // удаление потока
{ 
    
}
void main()
{
setlocale (LC_ALL, "Russian");
while(1)
    {
        ViewMenu();
        switch(a)
        {
        case(1):
            ViewThreads();
            break;
        case(2):
            CreateNewThread();
            break;
        case(3):
            DeleteLastThread();
            break;
        case(4):
             ExitProcess(1);
        printf("\n");
        system(" pause");
        exit(0);  
            break;
        default:
            cout << "Вы ввели не допустимое значение!";
        }}}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru