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

Threads и Events - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ ввод динамического символьного массива http://www.cyberforum.ru/cpp-beginners/thread134112.html
Моя задача в том, чтобы написать интерфейс к работе с базой данных на турбо с++. Посоветуйте как решить проблему ввода, например, динамического символьного массива. Не слишком большим извращением будет использовать для передвижения по экрану gotoxy(), а для считки cin?
C++ Потоки и символы разделителей Есть файл, открываю для него поток. Хочу считать из файла в строку отдельные слова.НО! Оператор >> не считывает символ табуляции, который мне также необходим, а метод getline позволяет третьим параметром указать только 1 разделитель, а при его использовании, чтобы слова не слипались, мне необходимо указать как минимум 2 -- пробел и символ перехода на новую строку. Как выкрутиться из этой... http://www.cyberforum.ru/cpp-beginners/thread134108.html
C++ траблы с сортировкой
вот собственно задание первые два я сделал, а третье чет с косяком =\ в одномерном массиве, состоящем из n вещественных элементов, вычислить: 1. количество элементов массива, равных 0; 2. сумму элементов массива, расположенных после минимального элемента; 3. упорядочить элементы массива по возрастанию модулей элементов. #include <iostream>
прямоугольная матрица C++
Дана целочисленная прямоугольная матрица. Определить: 1)количество строк, содержащих хотя бы один нулевой элемент; 2)номер столбца, в котором находится самая длинная серия одинаковых элементов
C++ одномерный массив http://www.cyberforum.ru/cpp-beginners/thread134072.html
В одномерном массиве, состоящем из n вещественных элементов, вы-числить: 1)произведение положительных элементов массива; 2)сумму элементов массива, расположенных после минимального элемента. 3)Упорядочить по возрастанию отдельно элементы, стоящие на четных местах, и элементы, стоящие на нечетных местах. помогите пожалуйста с программой
C++ Что изучать дальше? (С++) Я начинающий программист в С++. Знаю основы ( Прочитал полностью Шилда для начинающих, читаю Страуструпа) Что изучать дальше, в разных постах говорилось что изучать разные библы. Хотелось бы конкретнее услышать порядок действий, какие нужно изучить обязательно (понятное дело что не ток библиотеки буду изучать но и усовершенствовать свои знания в языке) Еще если посмотреть на вакансии то часто... подробнее

Показать сообщение отдельно
sp11
Сообщений: n/a
23.05.2010, 13:13     Threads и Events
Здравствуйте!

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

Есть основная программа, и поток, создающийся несколько раз!
Стоит задача - не выполнять в основной программе некоторое действие, пока ВСЕ созданные на данный момент времени потоки не выполнят своё некоторое действие. И программа и потоки фактически работают в цикле, потоки не завершаются.
То есть:
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;
}
События которые сейчас написаны работают естественно не правильно.
При создании потока в параметрах передаётся номер элемента массива который будет плюсовать этот поток.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru