Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
sp11
1

Threads и Events

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

Author24 — интернет-сервис помощи студентам
Здравствуйте!

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

Есть основная программа, и поток, создающийся несколько раз!
Стоит задача - не выполнять в основной программе некоторое действие, пока ВСЕ созданные на данный момент времени потоки не выполнят своё некоторое действие. И программа и потоки фактически работают в цикле, потоки не завершаются.
То есть:
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;
}
События которые сейчас написаны работают естественно не правильно.
При создании потока в параметрах передаётся номер элемента массива который будет плюсовать этот поток.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2010, 13:13
Ответы с готовыми решениями:

Threads
Доброго времени суток. Возможно ли реализовать многопоточное консольное приложение, при этом...

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

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

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

0
23.05.2010, 13:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2010, 13:13
Помогаю со студенческими работами здесь

Threads + Timer
у меня стоит задача выполнять какие-то действия в нескольких потока с какой-то периодичностью весь...

boost threads
#include <iostream> #include <boost/thread/thread.hpp> void hello_world() { std::cout <<...

Threads и параллелизация
Есть функция которая вычисляет пиксели картинки допустим pic(0, width*height, buf) с 0 начинается и...

datagridview and threads
В общем такая беда, хочу что бы данные брались из таблицы и передавались в качестве аргумента в...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru