我們都知道,乙個程式可能有多個程序組成,而乙個程序也可以有多個執行緒並行執行。執行緒的並行執行,可以提高程式的執行效率,但也存在著很多的危險,可能出現多個執行緒搶占乙個資源的情況。這裡我們就以ruby為例來說一說執行緒在ruby當中的應用。
該段程式引用自programming ruby當中,程式中提供了乙個**列表陣列,然後併發的從陣列當中請求相應的**。可能有些人對%w有些迷惑,%w會自動的對括號後面的字串以空格進行分割,儲存在陣列當中。怎麼樣,ruby很***吧,省去了很多的「」的困擾了。
threads.each
大家可能注意到這段**了,在ruby當中,當程式終止的時候,不管執行緒狀態如何,所有的執行緒都會被殺死。我們呼叫thread#join方法用來等待特定的執行緒結束。呼叫join的執行緒會阻塞,直到指定執行緒結束,所以對所有執行緒執行join操作,可以保證在程式結束前執行完所有的執行緒。
# 執行緒變數
count = 0
threads =
10.times do |i|
threads[i] = thread.new do
sleep(rand(0.1))
thread.current["myvalue"] =count #將值賦給當前變數
count += 1
endendthreads.each
Ruby基礎學習(一)
ruby算是我們平常自動化測試中常用的指令碼語言了,最近開始學習ruby,將這些學習的點滴記錄下來。1.輸出 最常用的是puts和print。很明顯puts是帶有回車的,而print不包括回車的。2.注釋 在ruby語言中,注釋是比較接近shell指令碼的,單行注釋可以使用 從 開始到 結束。在上面...
ruby學習筆記(一)
1.ruby中列出物件的方法 要知道乙個類是否定義了某個特殊的例項方法,需要在類上呼叫method defined?或者在類的例項上呼叫respond to?要知道乙個類是否定義可某個特定的類方法,需要在類上呼叫respond to?class myclass def myclass.my sing...
Ruby學習筆記(一)
1 單引號和雙引號的區別 單引號中不能包含變數,雙引號中可以包含變數。在ruby中,單引號中的 n這樣表示換行之類的轉義字元都會無效,直接輸出出來。2 使用for r uby的for有兩種用法 sum 0 for i in 2.5 sum 1 endputs sumnames a b c for n...