Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 22.03.2012
Сообщений: 42

Потоки. Сложение векторов

07.11.2012, 21:50. Показов 1003. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вечер добрый, товарищи программисты! Имеется решение задачи сложения векторов с помощью потоков. У меня проблемы с потоками,не могу понять, как работает функция sum_vector. Может кто-то сможет объяснить? Благодарю

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
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <vector>
#include <cmath>
#include <ctime>
#include <cstdlib>
#include <algorithm>
#include <windows.h>
 
using namespace std;
 
struct thread_data
{
  const vector<int> * v1;
  const vector<int> * v2;
  vector<int> * v;
  int p1;
  int p2;
 
};
 
DWORD WINAPI sum_thread_proc(LPVOID pparam)
{
  thread_data* p =
    reinterpret_cast<thread_data*>(pparam);
  for(int i = p->p1; i < p->p2; ++i)
  {
    (*p->v)[i] = (* p->v1)[i] +(*p->v2)[i];
  }
  return 0;
}
 
void sum_vector(int p, const vector<int> & v1,
                const vector<int> & v2, vector<int> & v)
{
  HANDLE * ahThreads = new HANDLE[p-1];
  vector<thread_data> vec_of_data (p);
  int a = 0;
  for(int i=0;i <p ; ++i)
  {
    vec_of_data[i].v1 = &v1;
    vec_of_data[i].v2 = &v2;
    vec_of_data[i].v = &v;
    int count = i < v1.size() % p ? v1.size()/p + 1
            : v1.size()/ p;
    vec_of_data[i].p1 = a;
    a += count;
    vec_of_data[i].p2= a;
    if(i == p-1)
      sum_thread_proc(&vec_of_data[p-1]);
    else
      CreateThread(
        NULL,0,sum_thread_proc,
        &vec_of_data[i],0,NULL);
  }
  WaitForMultipleObjects(p-1,ahThreads,TRUE,INFINITE);
  delete[] ahThreads;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.11.2012, 21:50
Ответы с готовыми решениями:

создание, сложение, вычитание векторов, скалярное и векторное умножение векторов
Есть задание по курсовой работе: надо разработать классы для реализации операций векторной алгебры: создание, сложение, вычитание...

Определить функцию работы с векторами: Сложение векторов, разность, умножение на скаляр,скалярное произведение векторов,вычисление длины вектора
с помощью фукнций map/ map-into / reduce определить функцию работы с векторами: Сложение векторов, разность, умножение на скаляр,скалярное...

Сложение векторов
Здрасти. #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cmath&gt; class vector3D{ public: vector3D(int inita=0,...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.11.2012, 21:50
Помогаю со студенческими работами здесь

Сложение векторов
Здравствуйте, нужна помощь. Код вроде бы написан правильно, но нигде не могу найти ошибку. В ответе консоль выдает System.Double, хотя...

Сложение векторов
Помогите с масивом,сложение векторов что бы можно было вводить размер векторов

Сложение векторов
(AB+AC)^2 AB(6;-5;-1) AC(1;0;7) Это вектора, их нужно сложить и возвести в квадрат, сложить я ещё могу, но как в квадрат возвести?...

Сложение векторов
Не понимаю почему методом insert не хочет принимать такие параметры. Даже если пытают переменной типа int присвоить vec, выдает ошибку (int...

Сложение векторов
У меня на первом курсе началась электродинамика. Гимназию я оканчивал гуманитарную, физики было мало, а я еще и слушал в пол уха. И тут у...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru