I have this :

    class Stress
      def initialize(user, pass)
        @user = user
        @pass = pass
        @agent = Mechanize.new do |a|
          a.user_agent_alias = 'Windows Mozilla'
          a.history.max_size = 0
          a.log = my_log
          a.log.progname = @user
        end
      end
      def browse
      @agent.log.progname = @user
      # open/close page
      end
    end

    my_log = Logger.new('dump.log')
    my_log.level = Logger::DEBUG
    atom = Mutex.new

    for i in (Attempts_start..Attempts_end)
      threads << Thread.new(Creden_base + i.to_s) do |user|
        stress = Stress.new(user, user)
        for j in (0..Attempts_req) do
            atom.synchronize {stress.browse} # has to be atomic
        end
      end
    end

The above code correctly identifies the different threads by the user by
setting the progname, but the problem is I have to use the Mutex class
to synchronize it, thus loosing the parallel computing since I have to
wait for the request to be sent and received before continuing.

Is there a way to do this without using the Mutex class. Have the
progname set on a per thread basis while running the threads in
real-time parallel.

-- 
Posted via http://www.ruby-forum.com/.