Hi, Dear haixiang and iwase :

Thankyou for your help.

At first, i try the solution Iwase given, but the main thread will also be
blocked until the thread finished which was create by "tpool" .

Secondly, i try invoking the hub.sleep method to sleep for several
milliseconds as haixiang said. It looks like my code works well, but how to
choose the sleep time interval ?

On Sat, Jul 25, 2015 at 2:49 PM, 杨haixiang <[email protected]> wrote:

> Hi Vinllen,
>
> I met the same problem too. I solved it by invoking a hub.sleep method to
> sleep for several milliseconds.
> It allowed other threads to continue. And it works.
> You probably could try it.
>
> Best Regards
> Haixiang YANG
>
> ------------------------------
> Date: Fri, 24 Jul 2015 10:33:53 +0800
> From: [email protected]
> To: [email protected]; [email protected];
> [email protected]
> Subject: Re: [Ryu-devel] How to creat new thread in RYU
>
> Dear iwase :
>
> Thankyou, so do you have any other idea to solve this problem. I found
> this problem could not be solved even when i use epoll which is not a
> blocking I/O.
>
> On Fri, Jul 24, 2015 at 7:51 AM, Yusuke Iwase <[email protected]>
> wrote:
>
> Hi,
>
> On 2015年07月23日 17:21, Vinllen Chen wrote:
> > Hi, Haixiang and iwase :
> >
> > Hear comes my code :
> > class Main(app_manager.RyuApp) :
> >     ....
> >     def __init__(self, *args, **kwargs):
> >         ....
> >     def start(self) :
> >         super(Main, self).start()
> >         self.threads.append(hub.spawn(Tun_Tap())) # call Tun_Tap class
> >
> > class Tun_Tap() :
> >     def __init__(self) :
> >         self.create_device()
> >         self.run()
> >     def create_device(self) : # create tun/tap device
> >         self.tun = open('/dev/net/tun', 'r+b')
> >         ifr = struct.pack('16sH', 'tap0', IFF_TAP | IFF_NO_PI)
> >         fcntl.ioctl(self.tun, TUNSETIFF, ifr)
> >         fcntl.ioctl(self.tun, TUNSETOWNER, 1000)
> >         subprocess.check_call('ifconfig tap0 30.1.1.1/24 <
> http://30.1.1.1/24>', shell=True)
> >     def run(self) :
> >         while True:
> >             packet_raw = os.read(self.tun.fileno(), 2048) # it will read
> from the tun/tap device, but it'll be blocked when there is no data
> >
> > The Tun_Tap class will be blocked when run "read", so do you have any
> idea to solve this problem ? I find the Main class will never run when the
> Tun_Tap is blocked
>
> Ryu uses eventlet (Python networking library) to create new threads.
> In eventlet thread, the codes with blocking I/O (e.g. file I/O) may block
> all other threads.
>
> Thanks,
> Iwase
>
> >
> > On Thu, Jul 23, 2015 at 4:04 PM, Yusuke Iwase <[email protected]
> <mailto:[email protected]>> wrote:
> >
> >     Hi,
> >
> >     On 2015年07月23日 16:18, Vinllen Chen wrote:
> >     > Hi, Dear all:
> >     >
> >     > I want to create a new thread/coroutine in RYU app, i find it's
> not ok to write the code below:
> >     >
> >     > class App(app_manager.RyuApp) :
> >     >     def __init__(self, *args, **kwargs):
> >     >         ...
> >     >         hub.spawn(New_One())
> >
> >     What messages did you get?
> >
> >     hub.spawn() is defined as follow.
> >     https://github.com/osrg/ryu/blob/master/ryu/lib/hub.py#L47
> >
> >     e.g.)
> >       from ryu.lib import hub
> >       ...
> >       class YourApp(app_manager.RyuApp) :
> >           def __init__(self, *args, **kwargs):
> >               ...
> >               hub.spawn(self.target_func)
> >
> >           def target_func(self):
> >               ...
> >
> >     Thanks,
> >     Iwase
> >
> >     >
> >     > --
> >     > Best Regards,
> >     > Vinllen
> >     >
> >     >
> >     >
> ------------------------------------------------------------------------------
> >     >
> >     >
> >     >
> >     > _______________________________________________
> >     > Ryu-devel mailing list
> >     > [email protected] <mailto:
> [email protected]>
> >     > https://lists.sourceforge.net/lists/listinfo/ryu-devel
> >     >
> >
> >
> >
> >
> > --
> > Best Regards,
> > Vinllen
>
>
>
>
> --
> Best Regards,
> Vinllen
>
>
> ------------------------------------------------------------------------------
> _______________________________________________ Ryu-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/ryu-devel
>



-- 
Best Regards,
Vinllen
------------------------------------------------------------------------------
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to