0 / 0 / 0
Регистрация: 29.08.2015
Сообщений: 4
|
|
1 | |
Написать консольную программу для генерации сигнатуры указанного файла (задействовать параллелизм)20.09.2016, 22:47. Показов 3003. Ответов 5
Метки нет (Все метки)
Здравствуйте, дорогие форумчане.
На днях подкинули заданице: Требуется написать консольную программу на C++ для генерации сигнатуры указанного файла. Сигнатура генерируется следующим образом: исходный файл делится на блоки равной (фиксированной) длины (если размер файла не кратен размеру блока, последний фрагмент может быть меньше или дополнен нулями до размера полного блока). Для каждого блока вычисляется значение hash функции и дописывается в выходной файл-сигнатуру. Так вроде ничего сложного, кроме следующего требования к этому заданию: 1. Следует максимально оптимизировать скорость работы утилиты с учетом работы в многопроцессорной среде Мне ввиду специфики работы, с потоками, параллелизмом и boost'ом общаться не приходилось. Может кто подсказать, в какую сторону вообще смотреть?
0
|
20.09.2016, 22:47 | |
Ответы с готовыми решениями:
5
Нужно написать консольную программу для нахождения значения F в заданном промежутке с шагом 0,5 Написать программу для автоматической генерации методов Написать консольную программу Написать программу для распечатки на экране монитора указанного в варианте набора символ |
0 / 0 / 0
Регистрация: 29.08.2015
Сообщений: 4
|
||||||
28.09.2016, 10:59 [ТС] | 3 | |||||
Тут не поспоришь, но когда не сталкивался вообще с этим, то трудно решить с чем работать WinApi, boost или еще чем
Пока решил пользоваться thread из STL, чтобы абстрагироваться от платформы (а может это иллюзия ). Возник вопрос следующего характера. Создается отдельный поток на чтение из файла, потоку передаем функцию (код ниже). Поток отсоединяется и работает в фоне. С маленькими файлами проблем нет (в пределах 10 - 20 Мб). А вот при чтении файла в 110 Мб регулярно вылетает ios:failure.
0
|
1375 / 519 / 72
Регистрация: 21.07.2015
Сообщений: 1,304
|
|
28.09.2016, 14:57 | 4 |
Работа с потоками и с синхронизацией поддерживается всеми современными С++11(14) компиляторами "из коробки". Используй шатный std::thread. WinApi - это непереносимо и имеет смыл использовать лишь если нужна супер оптимизация под винду.
Добавлено через 16 минут А если просто без потоков эту функцию запускаешь, то работает? Просто тут ты отрывок дал и не видно как из других потоков ты с этим хозяйством взаимодействуешь.
1
|
0 / 0 / 0
Регистрация: 29.08.2015
Сообщений: 4
|
||||||||||||||||||||||||||
28.09.2016, 18:59 [ТС] | 5 | |||||||||||||||||||||||||
Вот там, где я сейчас работаю с современными компиляторами беда. А тут за это задание взялся и понял, что работал больше с Си, чем С++ и STL.
Сама функция работает криво, неважно в потоке или нет. Вроде нашел место:
Кликните здесь для просмотра всего текста
Очередь
Кликните здесь для просмотра всего текста
Основной класс
Кликните здесь для просмотра всего текста
Методы класса
0
|
0 / 0 / 0
Регистрация: 29.08.2015
Сообщений: 4
|
|
30.09.2016, 22:44 [ТС] | 6 |
Итоговый рабочий вариант в приложении, может кому и пригодится.
shmkv спасибо за внимание к вопросу )
0
|
30.09.2016, 22:44 | |
30.09.2016, 22:44 | |
Помогаю со студенческими работами здесь
6
Написать программу для проверки указанного ниже свойства последовательности, вводимой с клавиатуры Написать программу, переводящую сумму в рублях в евро для указанного обменного курса Консольную программу написать в графическом интерфейсе Написать программу оператора цикла for для распечатки на экране монитора указанного в варианте набора символов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |