Skip to content

semenovad/UnixPipelineAnalogue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UnixPipelineAnalogue

Ассинхронность, горутины, хэш-функции.

Написан аналог unix pipeline.

  • Написана функция ExecutePipeline, которая обеспечивает конвейерную обработку функций-воркеров, которые что-то делают.
  • Написанны функции, которые считают условную хеш-сумму от входных данных

Расчет хеш-суммы реализован следующей цепочкой:

  • SingleHash считает значение crc32(data)+"~"+crc32(md5(data)) ( конкатенация двух строк через ~), где data - то что пришло на вход (по сути - числа из первой функции)
  • MultiHash считает значение crc32(th+data)) (конкатенация цифры, приведённой к строке и строки), где th=0..5, потом берёт конкатенацию результатов в порядке расчета (0..5), где data - то что пришло на вход (и ушло на выход из SingleHash)
  • CombineResults получает все результаты, сортирует и объединяет отсортированный результат через _ в одну строку
  • crc32 считается через функцию DataSignerCrc32
  • md5 считается через DataSignerMd5

В чем подвох:

  • DataSignerMd5 может одновременно вызываться только 1 раз, считается 10 мс. Если одновременно запустится несколько - будет перегрев на 1 сек
  • DataSignerCrc32, считается 1 сек
  • На все расчеты у нас 3 сек.
  • Если делать в лоб, линейно - для 7 элементов это займёт почти 57 секунд, следовательно надо это как-то распараллелить

Запускать как go test -v -race

About

Unix pipeline analogue

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages