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

Ошибка при передаче двумерного массива в функцию std::thread - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать программу, которая решает системы нелинейных неравенств с двумя переменными http://www.cyberforum.ru/cpp-beginners/thread1201932.html
Класс неравенств можно выбрать какой угодно. Сразу вопрос, какие есть вообще классы нелинейных неравенств? Количество неравенств к примеру 2 или 3. Область решений нужно вывести на экран в...
C++ Сохранить содержимое экрана в файл. Компилятор ругается на функцию farmalloc Помогите, пожалуйста, разобраться, что к чему. В общем так: я пытаюсь нарисовать на экране что-то в граф.режиме и потом сразу же сохранить это в файл в конкретной папке. Код отыскала на просторах... http://www.cyberforum.ru/cpp-beginners/thread1201930.html
Соритровка массива и структурный тип данных C++
Всем доброго времени суток, кого не затруднит прошу помочь написать, а точнее дописать, программу, суть ее в следующем: Упорядочить сведения о сотрудниках старше 30 лет в порядке возрастания их...
C++ Упорядочивание массива структур
Всем доброго времени. Кого не затруднит, прошу помочь написать а точнее дописать программу) Суть ее заключается в следующем: Упорядочить сведения о сотрудниках старше 30 лет в порядке возрастания...
C++ необходимо найти решение, пожалуйста http://www.cyberforum.ru/cpp-beginners/thread1201868.html
На остановке останавливаются троллейбусы с разными номерами. Сообщение о том, что к остановке подошел троллейбус с номером N1 несет 4 бита информации. Вероятность появления на остановке троллейбуса с...
C++ Вывод интервалов для решения неравенства второй степени Здравствуйте, подскажите, пожалуйста, как в коде сделать вывод интервалов для неравенства второй степени void CNeravenstvovtoroystepeniDlg::OnBnClickedButton1() { // TODO: добавьте свой код... подробнее

Показать сообщение отдельно
red_square
2 / 2 / 2
Регистрация: 07.10.2013
Сообщений: 48

Ошибка при передаче двумерного массива в функцию std::thread - C++

07.06.2014, 16:31. Просмотров 707. Ответов 3
Метки (Все метки)

Здравствуйте! Написал программу на потоки, теперь нужно передать туда двумерный массив.
Пытаюсь передать по ссылке, но каждый раз выскакивает это сообщение:
error C2664: "void (int **,int,int)": невозможно преобразовать аргумент 1 из "int" в "int **"

Если кто-нибудь знает, как исправить, подскажите.
Заранее спасибо!

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
58
59
60
61
62
63
64
#include "stdafx.h"
#include <functional>
#include <stdio.h>
#include <thread>
#include <chrono>
#include <iostream>
#include <mutex>
#include <vector>
 
#define size 1000
 
int arr[size][size];
int sum;
int mid;
 
std::mutex                          g_lock;
std::mutex                          g_mutex;
std::vector<std::exception_ptr>     g_exceptions;
 
/* Функция, выполняющая поток */
void threadFunction(int** a, int begin_ct, int end_ct){
 
    std::cout << "Присоединяюсь к потоку " << std::this_thread::get_id() << std::endl;
    
    int z;
    int v;
    for (z = begin_ct; z <= end_ct; ++z){
        for (v = begin_ct; v <= end_ct; ++v){
            sum = sum + a[z][v];
        }
    }
    std::this_thread::sleep_for(std::chrono::seconds(rand() % 10));
    std::cout << "Покидаю поток " << std::this_thread::get_id() << std::endl;
 
}
 
/* Главная функция программы */
int _tmain(int argc, _TCHAR* argv[])
{
    int i;
    int j;
    /* Создание массива данных*/
    std::cout << "Программа находит среднее арифметическое двумерного массива из " << size << " x " << size<< " элементов";
    std::cout << "Статус программы:";
    for (i = 0; i <= size; i++){
        for (j = 0; j <= size; j++){
            arr[i][j] = rand() % (1000);
        }
    }
    std::cout << "Cоздание массива завершено";
 
    /* Создание потоков и передача данных в них*/
    std::thread thr1(threadFunction, std::ref(arr[i][j]), 0, size / 4);
    std::thread thr2(threadFunction, std::ref(arr[i][j]), size / 4, size / 2);
    std::thread thr3(threadFunction, std::ref(arr[i][j]), size / 2, 3 * size / 4);
    std::thread thr4(threadFunction, std::ref(arr[i][j]), 3 * size / 4, size);
 
    /* Присоединение к потокам */
    thr1.join();
    thr2.join();
    thr3.join();
    thr4.join();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru