zoukankan      html  css  js  c++  java
  • Ruby 2

    def func1
      i=0
      while i<=2
        puts "func1 at: #{Time.now}"
        sleep(2)
        i+=1
      end
    end
    
    def func2
      j=0
      while j<=2
        puts "func2 at: #{Time.now}"
        sleep(1)
        j+=1
      end
    end
    
    puts "Started At #{Time.now}"
    t1=Thread.new{func1()}
    t2=Thread.new{func2()}
    t1.join
    t2.join
    puts "End at #{Time.now}"
    

    Ruby 代码不同python,不需要完整完全格式化

    require 'thread'
    puts "Synchronize Thread"
    
    @num = 200
    @mutex = Mutex.new
    
    def buyTicket(num)
      @mutex.lock
      # 不一定非要格式化
      if @num >= num
        @num -= num
        puts "You have successfully bought #{num} tickets"
      else
        puts "Sorry,no enough tickets"
      end
      @mutex.unlock
    end
    
    ticket1=Thread.new 10 do
      10.times do |value|
        ticketNum=15
        buyTicket(ticketNum)
        sleep 0.01
      end
    end
    
    ticket2=Thread.new 10 do
      10.times do |value|
        ticketNum = 20
        buyTicket(ticketNum)
        sleep 0.01
      end
    end
    
    sleep 1
    ticket1.join
    ticket2.join
    
    
    require 'thread'
    puts "SizedQueue Test"
    
    queue = Queue.new
    
    producer=Thread.new do
      10.times do |i|
        sleep rand(i) #让线程睡眠一段时间
        queue << i
        puts "#{i} produced"
      end
    end
    
    consumer = Thread.new do
      10.times do |i|
        value = queue.pop
        sleep rand(i/2)
        puts "consumed #{value}"
      end
    end
    
    consumer.join
    
  • 相关阅读:
    IO复用(较详细)
    关于CGI 和 PHP-FPM需要弄清的
    php内核一些常识
    python搭建web服务
    瓶颈分析
    分布式系统
    vmdk多文件合成单文件并导入
    用户登录自动调用修改网络信息脚本
    strace命令用法
    使用Nginx反向代理Docker的Asp.Net Core项目的请求
  • 原文地址:https://www.cnblogs.com/ukzq/p/13376185.html
Copyright © 2011-2022 走看看