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.