• #8 楼 @ruohanc 这么老的帖子都被挖出来了。。 当时的本意是想通过一个线程顺序的分发数据给多个线程,实际操作结果来看,正如你所说不稳定而且互相等待性能很差,后面改用 C 实现的

  • 用 params 传文件名 然后 send_file 就行了

  • #1 楼 @cifery 我请求的就是 new,不是从其他 action render 过来的,应该怎么写?

  • so so so cool!!

  • require 'thread'
    mutex = Mutex.new
    cv = ConditionVariable.new
    arr = [1, 2, 3, 4, 5, 6, 7, 8]
    thread =[]
    thread<< Thread.new do
      mutex.synchronize do
        arr.each { |a|
          @value = a
          cv.broadcast
          cv.wait(mutex)
        }
      end
    end
    
    thread<< Thread.new do
        mutex.synchronize do
          while  thread[0].alive?
            puts  @value
          cv.wait(mutex)
        end
      end
    end
    thread<< Thread.new do
        mutex.synchronize do
          while  thread[0].alive?
            puts  @value
          cv.signal  if Thread.list.pop==Thread.current
          cv.wait(mutex)
        end
      end
    end
    thread<< Thread.new do
        mutex.synchronize do
          while  thread[0].alive?
          puts  @value
          cv.signal  if Thread.list.pop==Thread.current
          cv.wait(mutex)
        end
      end
    end
    sleep 2
    
    ########################################
    1
    1
    1
    2
    2
    2
    3
    3
    3
    4
    4
    4
    5
    5
    5
    6
    6
    6
    7
    7
    7
    8
    8
    8
    
    Process finished with exit code 0
    
  • #1 楼 @jjym 我 A 线程的数组迭代的时候每个元素,会等待其他线程都读取完这个元素后,进行下一次迭代,直到数组遍历完全,也就是这三个线程中的值始终是相等的