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

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

Войти
Регистрация
Восстановить пароль
 
IcyWind
8 / 8 / 2
Регистрация: 19.09.2011
Сообщений: 269
#1

"общение" потоков - C++

12.03.2012, 16:27. Просмотров 317. Ответов 0
Метки нет (Все метки)

Здравствуйте.
Будут два потока. оба получают 2 иттератора (для конкретности vector<int>).
нужно:
один поток находит число, меньшее данного. Останавливается. Ждёт, пока остановится второй поток.
второй находит число, большее данного. Останавливается. Ждёт, пока остановится первый поток.
потом нужно вытащить иттераторы из каждого потока (из первого it1, втого it2) и сделать
swap(it1,it2)
Не знаю...как организовать это "общение". Знаю, что для ожидания можно использовать события...
а как вытащить иттераторы...может в потоке мейн делать свап через статические переменные?
тут примерный код потоков


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
#include "stdafx.h"
#include <Windows.h>
#include <vector>
#include <iostream>
using namespace std;
 
template <typename T>
struct para
{
    T begin,end;
           int chislo;
    para (T b, T e, int n)
    {
        begin = b;
        end = e;
                      chislo = n;
    }
};
 
typedef para<vector<int>::iterator> iterator_pair;
 
 
 
 
DWORD WINAPI func(PVOID param)
{
    iterator_pair* p = static_cast< iterator_pair * > (param);
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    vector<int> b;
    b.push_back(5);
    b.push_back(4);
    b.push_back(3);
    b.push_back(2);
 
    iterator_pair p(b.begin() , b.end(), 3);
     
 
    HANDLE potok = CreateThread(NULL, 0, func, &p, 0, NULL);
    WaitForSingleObject(potok, INFINITE);
    
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2012, 16:27     "общение" потоков
Посмотрите здесь:

C++ Преобразовать строку, заменяя каждое слово "this" словом "that".
возвращаемый тип "main" должен быть "int", а не C++
"Теория вероятности Шейтона" и "Кодирование/дикодирование информации" (C++) C++
C++ После каждой буквы "о" в слове вставить сочетание "ля"
C++ Что происходит когда например "char* g="fdgag";"?
Два числа, действительное "a" и натуральное "n" вводятся с клавиатуры C++
Процедура, "рисующая" на экране горизонтальную линию из 80 символов "*" C++
Error C2440: =: невозможно преобразовать "void *" в "Node *" C++
Двумерный массив: Добавить методы "ДайЗначениеЯчейки", "УстановиЗначениеЯчейки" C++
Массив "hotel", в который пользователь добавляет "жильцов" C++
Почему вместо обратного слеша "\" выводит "¥" C++
C++ Невозможно преобразовать "unsigned int" в "output::book_origin"

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

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

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