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

Threads и Events - C++

Восстановить пароль Регистрация
 
sp11
Сообщений: n/a
23.05.2010, 13:13     Threads и Events #1
Здравствуйте!

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

Есть основная программа, и поток, создающийся несколько раз!
Стоит задача - не выполнять в основной программе некоторое действие, пока ВСЕ созданные на данный момент времени потоки не выполнят своё некоторое действие. И программа и потоки фактически работают в цикле, потоки не завершаются.
То есть:
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;
}
События которые сейчас написаны работают естественно не правильно.
При создании потока в параметрах передаётся номер элемента массива который будет плюсовать этот поток.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2010, 13:13     Threads и Events
Посмотрите здесь:

C# IO и threads
C++ Обработка событий (events) в Visual Studio
C++ Two Threads + CriticalSection
boost threads Boost C++
Threads + Timer C#
Threads C++
C++ Threads. Задача. Написать программу, которая создаёт несколько потоков поиска простых чисел и записи в .txt
Threads and WebClient C#
C++ Threads или как запрограммировать кнопку Старт и Стоп C++
C++ Threads
Сканирование компьютеров на присутствие в сети онлайн. #threads #c++11 #ping #icmp C++
C++ В чем ошибка при использовании std::threads

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 12:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru