Вы можете использовать переменную в теге статического шаблона. Обратите внимание, что вам не нужны {{
или }}
{% static SampleModel.0.propertyValue %}
Сценарий
threads = []
(1..5).each do |i|
threads << Thread.new { Thread.current[:output] = `echo Hi from thread ##{i}` }
end
threads.each do |t|
t.join
puts t[:output]
end
иллюстрирует, как выполнить то, что вам нужно. Преимущество заключается в том, что выходные данные хранятся в потоке, который его сгенерировал, так что вы можете присоединиться и получить выходные данные каждого потока в любое время. При запуске скрипт печатает
Hi from thread #1 Hi from thread #2 Hi from thread #3 Hi from thread #4 Hi from thread #5
Вы должны использовать класс Queue . Каждый поток должен поместить свой результат в очередь, а основной поток должен получить его оттуда. Обратите внимание, что при таком подходе результаты могут быть в порядке, отличном от порядка создания потока в очереди.
Это простой и интересный способ использования Thread # value :
a, b, c = [
Thread.new { "something" },
Thread.new { "something else" },
Thread.new { "what?" }
].map(&:value)
a # => "something"
b # => "something else"
c # => "what?"
. Я обнаружил, что проще использовать коллекцию для сбора потоков в список и использовать thread.value для объединения и возврата значения из потока - это сокращает его до:
#!/usr/bin/env ruby
threads = (1..5).collect do |i|
Thread.new { `echo Hi from thread ##{i}` }
end
threads.each do |t|
puts t.value
end
При запуске , это производит:
Hi from thread #1
Hi from thread #2
Hi from thread #3
Hi from thread #4
Hi from thread #5
Просто используйте Thread#value
:
threads = (1..5).collect do |i|
Thread.new { `echo x#{i}.bin` }
end
threads.each do |t|
puts t.value
end