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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sp11
0 / 0 / 0
Регистрация: 20.05.2010
Сообщений: 2
#1

Threads и Events - C++

23.05.2010, 13:13. Просмотров 379. Ответов 0
Метки нет (Все метки)

Здравствуйте!

Вопрос следующий:

Есть основная программа, и поток, создающийся несколько раз!
Стоит задача - не выполнять в основной программе некоторое действие, пока ВСЕ созданные на данный момент времени потоки не выполнят своё некоторое действие. И программа и потоки фактически работают в цикле, потоки не завершаются.
То есть:
1. Основная программа из вне получает некоторое событие.
2. Сообщает с помощью Event потокам что пора выполнить некоторое действие.
3.(!) Потоки сообщают основной программе что нужно опять ждать события из вне, и сами снова переходят в ожидание Event от основной программы(!)

Вот вопрос собственно в 3 пункте. Как программе не начать ожидать события из вне, пока ВСЕ потоки не выполнили некоторое действие и снова не перешли в режим ожидания события от основной программы.

Добавлено через 22 минуты
как это реализовать на этом простейшем примере:

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
void Thread( void* pParams )
{
int i, num = 0;
 
while ( TRUE )
{
WaitForSingleObject( hEvent2, INFINITE );
a[  ] = num;
num++;
 
//ResetEvent(hEvent2);
//?...
//?...
}
}
 
int main( void )
{
hEvent2 = CreateEvent( NULL, FALSE, FALSE, NULL );
 
CreateThread(NULL, 0, Thread, /*0*/, 0, NULL);
CreateThread(NULL, 0, Thread, /*1*/, 0, NULL);
CreateThread(NULL, 0, Thread, /*2*/, 0, NULL);
while( TRUE )
{ 
// ?..
// ?..
printf( "%d %d %d\n", a[ 0 ], a[ 1 ], a[ 2 ]);
SetEvent( hEvent2 );
}
return 0;
}
События которые сейчас написаны работают естественно не правильно.
При создании потока в параметрах передаётся номер элемента массива который будет плюсовать этот поток.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2010, 13:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Threads и Events (C++):

Threads - C++
Недавно начал изучать многопоточность. Нашёл функцию uintptr_t _beginthreadex( // NATIVE CODE void *security, unsigned...

Threads - C++
Есть массив потоков в количестве 10 и есть функция, которую надлежит выполнить 50 раз, как этими 10-ю потоками выполнить её 50 раз?

Two Threads + CriticalSection - C++
код... #include <stdio.h> #include <stdlib.h> #define WIN32_LEAN_AND_MEAN #define _WIN32_WINNT 0x0500 #include <windows.h> ...

В чем ошибка при использовании std::threads - C++
Добрый день! Упражняюсь в std::threads, написал вот такую-вот программку. Выдает ошибку: error C2280: "std::mutex::mutex(const...

C++ Threads или как запрограммировать кнопку Старт и Стоп - C++
Погуглил нечего не нашёл на эту тему..

Обработка событий (events) в Visual Studio - C++
У меня есть два события, они выполняют одинаковые действия, можно ли как то сделать вызов одного события в другом?

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2010, 13:13
Привет! Вот еще темы с ответами:

Сканирование компьютеров на присутствие в сети онлайн. #threads #c++11 #ping #icmp - C++
Пишу программу, которая будет проверять наличие компьютеров в сети. Нашел на msdn код для отправки ICMP запроса. Пытаюсь использовать этот...

Threads. Задача. Написать программу, которая создаёт несколько потоков поиска простых чисел и записи в .txt - C++
Добрый день. Начал изучать потоки и програмить с помощью C++. Дали задание - Написать программу, которая создаёт несколько потоков поиска...

Задача "Производители-Потребители", реализация с помощью Events и циклического буфера - C++
Доброго времени суток. Написал программу для решения сабжевой задачи, с условиями 1 производитель, 1 потребитель. Программа...

IO и threads - C#
Посоветуйте плиз, что делать! возникает ошибка когда разные нитки пишут в один файл. "Probable IO race condition detected". вывел...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.