[Stackless] Q2: Uthread's 'Thread' class

Ixokai ixokai at myseraph.org
Fri Apr 13 01:38:22 CEST 2001


> Ixokai wrote:
> > From the microthread documentation: "When threads are created using the
> > Thread class, the first argument of the thread's function will be the
thread
> > instance"

Just van Rossum wrote:
> I'm not sure, but it looks like the doco on
> http://world.std.com/~wware/uthread.html is still based on the original
uthread
> module. The above certainly doesn't apply to the current version...

Ahh. That explains why I was getting confused, I was using the uthread.py as
additional-documentation but still mostly refeering to the webpage. :)
Thanks.

Unfortunately, I still can't quite get it to add new thread objects into the
mix from one which already exists.

Stripped code follows; in it, the Client.run() never gets called, dispite
the uthread.new(client.run) in the connection bit of the Server process. I
think i'm just adding new threads the wrong way. :)

----------------------------------------------------------------------------
------------------

ClientList, ThreadList = [], []

class Server:
    def __init__(self, port = 3123):
          Server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
          Server.bind( ("", port) )
          self._Server = Server
          if __debug__:
               print "Server process started."
         self.MessageQueue = uthread.Queue()

   def start(self, queue=1):
        if __debug__:
               print "Listening..."
        self._Server.listen(queue)

        while 1:
               connection, info = self._Server.accept()
               if __debug__:
                    print "Got connection from", info
               client = Client(connection)
               th = uthread.new(client.run)

               ClientList.append(client)
               ThreadList.append(th)

class Client:
    def __init__(self, *args, **kwargs):
          self.args = args
          self.kwargs = kwargs
          print "Client is running!"
    def run(self,instance,*args,**kwargs):
          print "Instance is:",instance,"Args are:", args, "Kwargs are:",
kwargs

if __name__ == '__main__':
     print "You are in main!"
     s = Server()
    uthread.new(s.run)
    uthread.run()



_______________________________________________
Stackless mailing list
Stackless at starship.python.net
http://starship.python.net/mailman/listinfo/stackless



More information about the Stackless mailing list