19.7. Równoległe uruchamianie wielu zadań

Problem

Proces budowania aplikacji zajmuje zbyt dużo czasu. System Rake kończy kopiować jeden zbiór plików, by za chwilę rozpocząć kopiowanie innego. W celu zaoszczędzenia czasu można uruchamiać zadania równolegle zamiast uruchamiania ich jedno po drugim.

Rozwiązanie

Można zdefiniować zadanie, używając funkcji multitask zamiast task. Każdy z warunków wstępnych zadania uruchomi się w osobnym wątku.

W poniższym kodzie zdefiniowano dwa długotrwałe zadania:

task 'copy_docs' do # Symulacja kopiowania dużego pliku. sleep 5 end task 'compile_extensions' do # Symulacja kompilacji zbioru plików przez kompilator języka C. sleep 10 end task 'build_serial' => ['copy_docs', 'compile_extensions'] multitask ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.