[過去ログ] Ruby 初心者スレッド Part 58 [無断転載禁止]©2ch.net (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
927
(1): デフォルトの名無しさん [sage] 2016/09/25(日) 14:26:19.46 ID:xgjFkYJ1(1/3) AAS
ArrayでFIFOバッファを作ったとしてスレッドAからArray#concatで追加
スレッドBからArray#eachで読み出したいと考えています
eachで読み出している最中に要素が追加されても問題ないでしょうか?

whileで条件を確認しながらArray#shiftで読むと遅いので出来ればArray#eachを
使いたいのですが・・・
932
(2): デフォルトの名無しさん [sage] 2016/09/25(日) 21:15:17.31 ID:xgjFkYJ1(2/3) AAS
>>928
928(1): デフォルトの名無しさん [sage] 2016/09/25(日) 14:29:48.97 ID:oyerjsz0(1/3) AAS
>>927
素直に Thread::Queue 使えばええんとちゃうのん?
そんなのあったっけ・・・っと思ったら2.3から追加された物ですか
今すぐに動かせるのは2.1なので試せていませんが
リファレンスマニュアルを読むとpushで追加しpopで読み出していくようですね
これだと結局whileで条件を見ながらループを回すようですが速くなるのでしょうか?

>>929
929(2): デフォルトの名無しさん [sage] 2016/09/25(日) 14:39:24.97 ID:hrPU7kVw(2/3) AAS
読み出している配列を更新してはいけない。
別の配列に、書き込めばいい

そうしないと、バグる
バッファを2つ用意して交互に使用しeachで読み出すようにしたらwhile&Array#shiftの
1/3くらいで処理が終わるようになりました。コードの可読性が低下しましたけど
934
(1): デフォルトの名無しさん [sage] 2016/09/25(日) 22:03:00.52 ID:xgjFkYJ1(3/3) AAS
>>933
933(1): デフォルトの名無しさん [sage] 2016/09/25(日) 21:18:44.25 ID:oyerjsz0(2/3) AAS
>>932
1.9 にも Queue クラスあるよ
えっ?リファレンスマニュアルを見てもそれっぽいのはないような・・・
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.052s