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

Разделение потоков - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Передача функциям строк http://www.cyberforum.ru/cpp-beginners/thread625468.html
Нужно отсортировать массив строк методом выбора. Вот функция которую я побровал написать, но она не проходит компиляцию. void SelectSort( char c, int size ) { int i, j, k; char x; for(i = 0; i < size; i++) // Номер текущего шага { k = i; x = c;
C++ Фракталы http://www.youtube.com/watch?v=n7JLHxBm0eY&feature=relmfu Как это делают? Да и вообще возможно ли написать код для увеличения фрактала в огромное количество раз? Сколько не пробовал (с программой ультра фрактал) - не больше 1020, - а дальше глючит! Вот вопрос: можно ли нарисовать красочное множество мандельброта, как здесь и в разрешении 19200х10800 сохранить в формате png:... http://www.cyberforum.ru/cpp-beginners/thread625459.html
C++ Функции потока: Если строки хранят числа, то выводится сумма, иначе – конкатенация строк
Л.Р.2 Вариант №5 ------------ Разработать программу, осуществляющую ввод двух строк, введенных пользователем. Далее, если обе строки хранят целые числа со знаком, то на экран выводится сумма чисел, в противном случае – конкатенация двух вве-денных строк. Проверку на соответствие строки целому числу, вычисление суммы чисел и конкатенации строк оформить как три разных функции потока. Ввод...
C++ Присвоение словам численных характеристик
Есть 100 различных слов. Каждому слову надо присвоить 7 целых численных характеристик в диапазоне от 0 до 4 включительно. Как наиболее оптимально организовать символьный массив и присвоить ему численные значения ?
C++ Нужно вывести на экран график по массиву из заданных координат http://www.cyberforum.ru/cpp-beginners/thread625398.html
Здравствуйте! Нужно вывести на экран график по массиву из заданных координат x и y. Сделать это нужно в консольном приложении visual c++. С выводом графиков сталкиваться еще не приходилось, поэтому понятия не имею, как это сделать. Литература, найденная с помощью гугла толком не помогла.. :gsad: Если кто уже сталкивался с подобной задачей, либо просто готов помочь..буду благодарна :gsmile:
C++ Мнимая единица Здравствуйте! Кто сможет подсказать? Есть пример из маткада. Как этот пример написать на С++? Меня интересует, как объявить мнимую единицу или задать, чтобы можно было вывести на экран реальные и мнимые выражения, как в маткаде. подробнее

Показать сообщение отдельно
Nukutu
176 / 102 / 2
Регистрация: 22.03.2010
Сообщений: 456
19.07.2012, 09:46     Разделение потоков
Цитата Сообщение от alexey31415 Посмотреть сообщение
я-то уверен,но,как обычно бывает,ничего не работает
Вот, немного переделал пример с MSDN под Ваш вариант. Все работает.
Сначала выполняются первые 2 потока, потом следующие 2.
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include <windows.h>
#include <stdio.h>
#include <iostream>
#include <conio.h>
 
#define THREADCOUNT 2
 
HANDLE ghMutex; 
 
DWORD WINAPI WriteToDatabase( LPVOID );
 
int main( void )
{
    HANDLE aThread[THREADCOUNT];
    DWORD ThreadID;
    int i;
 
    // Create a mutex with no initial owner
 
    ghMutex = CreateMutex( 
        NULL,              // default security attributes
        FALSE,             // initially not owned
        NULL);             // unnamed mutex
 
    if (ghMutex == NULL) 
    {
        printf("CreateMutex error: %d\n", GetLastError());
        return 1;
    }
 
    // Create worker threads
 
    for( i=0; i < THREADCOUNT; i++ )
    {
        aThread[i] = CreateThread( 
                     NULL,       // default security attributes
                     0,          // default stack size
                     (LPTHREAD_START_ROUTINE) WriteToDatabase, 
                     NULL,       // no thread function arguments
                     0,          // default creation flags
                     &ThreadID); // receive thread identifier
 
        if( aThread[i] == NULL )
        {
            printf("CreateThread error: %d\n", GetLastError());
            return 1;
        }
    }
 
    // Wait for all threads to terminate
 
    WaitForMultipleObjects(THREADCOUNT, aThread, TRUE, INFINITE);
 
    // Close thread and mutex handles
 
    for( i=0; i < THREADCOUNT; i++ )
        CloseHandle(aThread[i]);
 
    // Create worker threads
 
    for( i=0; i < THREADCOUNT; i++ )
    {
        aThread[i] = CreateThread( 
                     NULL,       // default security attributes
                     0,          // default stack size
                     (LPTHREAD_START_ROUTINE) WriteToDatabase, 
                     NULL,       // no thread function arguments
                     0,          // default creation flags
                     &ThreadID); // receive thread identifier
 
        if( aThread[i] == NULL )
        {
            printf("CreateThread error: %d\n", GetLastError());
            return 1;
        }
    }
 
    // Wait for all threads to terminate
 
    WaitForMultipleObjects(THREADCOUNT, aThread, TRUE, INFINITE);
 
    // Close thread and mutex handles
 
    for( i=0; i < THREADCOUNT; i++ )
        CloseHandle(aThread[i]);
 
    CloseHandle(ghMutex);
    while (!kbhit()) ;
 
    return 0;
}
 
DWORD WINAPI WriteToDatabase( LPVOID lpParam )
{ 
    // lpParam not used in this example
    UNREFERENCED_PARAMETER(lpParam);
 
    DWORD dwCount=0, dwWaitResult; 
 
    // Request ownership of mutex.
 
    while( dwCount < 10 )
    { 
        dwWaitResult = WaitForSingleObject( 
            ghMutex,    // handle to mutex
            INFINITE);  // no time-out interval
 
        switch (dwWaitResult) 
        {
            // The thread got ownership of the mutex
            case WAIT_OBJECT_0: 
                __try { 
                    // TODO: Write to the database
                    printf("Thread %d writing to database...\n", 
                            GetCurrentThreadId());
                    dwCount++;
                } 
 
                __finally { 
                    // Release ownership of the mutex object
                    if (! ReleaseMutex(ghMutex)) 
                    { 
                        // Handle error.
                    } 
                } 
                break; 
 
            // The thread got ownership of an abandoned mutex
            // The database is in an indeterminate state
            case WAIT_ABANDONED: 
                return FALSE; 
        }
    }
    return TRUE; 
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru