Skip to content

Ingerdev/mt_csp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mt_csp

mt_csp

Основная версия. Работает на csp-каналах из буста (boost::fibers::buffered_channel).

Архитектура: Создается N рабочих потоков, у которых есть входные и выходные каналы связи.

Основной поток программы читает файл поблочно. Каждый блок разбивается на части, которые частично перекрывают друг друга (размер перекрытия - pattern length -1). С каждой частью хранится её глобальный оффсет в файле.

Части отправляются свободным потокам(каждая своему) и основной поток засыпает во when_any на прием данных из каналов от рабочих потоков. При пробуждении он собирает ответы от рабочих потоков, досылает еще необработанные слайсы в освободившиеся потоки и повторяет так до тех пор, пока все части текущего куска данных не будут обработаны.

После обработки всех частей текущего куска, загружается новая часть данных из файла, причем небольшой хвост-перекрытие из предыдущего куска копируется в начало нового. Новая часть аналогично разбивается на части и передается рабочим потокам.

Так продолжается до тех пор, пока весь файл не будет обработан.

About

mt_csp

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published