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

Чтение/запись в файл с использованием многопоточности - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Скиньте литературу по спискам в C++ http://www.cyberforum.ru/cpp-beginners/thread1238914.html
Скиньте литературу по спискам в С++, НО которая расчитана на полного чайника (т.е. где все будет до мелчайших подробностей расписано). Может кто учился по такой, может знает.
C++ Как создать фигуры для тетриса? Привет всем! Захотел написать простенькую игру и решил начать с тетриса. Пишу в visual studio 2013 c++. Как и всегда появляются проблемы: Нарисовал текстурки для фигур, но я не знаю как из текстур... http://www.cyberforum.ru/cpp-beginners/thread1238907.html
C++ Указатель на не объявленную структуру
Допустим я описал структуру. Объявил указатель на эту структуру. struct MyStruct{ char ch; int i; }; std::cout<<sizeof(MyStruct); MyStruct * pMyStruct; Из за выравнивания размер...
C++ Если память для объекта выделяется динамически (строка 33), сортировка sort не работает
Если память для объекта выделяется динамически (строка 33), сортировка sort не работает, если память не выделять, все работает. Как избежать проблему? #include <iostream> #include <list>...
C++ Создайте класс Polar, который предназначен для хранения полярных координат (радиуса и угла) http://www.cyberforum.ru/cpp-beginners/thread1238846.html
Задача такова: Только для любителей математики: создайте класс Polar, который предна- значен для хранения полярных координат (радиуса и угла). Перегрузите операцию + для выполнения сложения для...
C++ Тяжело ли написать утилитку, которая работает как DOS-команда "pause" Тяжело ли написать утилитку, которая работает как DOS-команда "pause", но с автопродолжением через (например) 10 секунд? Научился обрабатывать таймер в бесконечном цикле. Самописный Sleep();... подробнее

Показать сообщение отдельно
Afrit
6 / 6 / 1
Регистрация: 27.08.2013
Сообщений: 128

Чтение/запись в файл с использованием многопоточности - C++

06.08.2014, 01:01. Просмотров 2611. Ответов 38
Метки (Все метки)

Доброго времени суток!
Хочу решить следующую задачу:
Есть большой бинарный файл (несколько гигабайт к примеру). Нужно разбить этот файл на части и записать в другой файл хэши этих частей, используя многопоточность (многопроцессорность). С ней я никогда не работал. Читал про процессы, потоки и т.д. Но никогда не использовал в программах.
Предполагаю сделать так
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
#include "header.h"
using namespace std;
 
void read_file( mutex& m_arr, mutex& m_out) {
    int num;
    
        FILE *fin, *fout;
        size_t k;
        char buf[1024];
        fin = fopen("input.txt", "r");
 
        while (!feof(fin))
        {
            m_arr.lock();
            k = fread(buf, sizeof(char), 100, fin);
    
        }
        fclose(fin);
        
}
void write_file( mutex& m_arr, mutex& m_out) {
    int i = 0, num;
    
}
 
int main()
{
    
    mutex m_arr, m_out;
    thread read_thread(read_file, ref(m_arr), ref(m_out));
    thread write_thread(write_file, ref(m_arr), ref(m_out));
    if (read_thread.joinable()) read_thread.join();
    if (write_thread.joinable()) write_thread.join();
    
    return 0;
}
 
 
}
Думаю, как использовать мьютексы. Был бы признателен за подсказки, как грамотнее реализовать эту задачу. Может быть дробление, чтение файла лучше реализовывать по другому? Или многопоточность использовать по другому? Пока я предполагал, что один поток будет читать и дробить в файлы, другой хэшировать и записывать. Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru