diff --git a/examples/multi/threaded.rb b/examples/multi/threaded.rb new file mode 100644 index 0000000..ba50dce --- /dev/null +++ b/examples/multi/threaded.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +require_relative '../../lib/tty-spinner' + +def spinner_options + [ + ":spinner \e[1mNo\e[0m :number Row :line", + format: :dots, + error_mark: '✖', + success_mark: "\e[1m\e[32m✓\e[0m\e[0m" + ] +end + +spinners = TTY::Spinner::Multi.new(*spinner_options) +threads = [] + +20.times do |i| + threads << Thread.new do + spinner = spinners.register(*spinner_options) + sleep Random.rand(0.1..0.3) + + 10.times do + sleep Random.rand(0.1..0.3) + spinner.update(number: "(#{i})", line: spinner.row) + spinner.spin + end + end +end + +threads.each(&:join)