import fibra
import fibra.plugins.nonblock
import fibra.plugins.sleep
import time
def stuff():
yield fibra.plugins.nonblock.WillBlock()
print 'I am running inside a thread.'
time.sleep(2)
print 'I am still running inside a thread.'
time.sleep(1)
print 'I am exiting the thread, going back into cooperative mode.'
yield None
for i in xrange(3):
print 'I am running cooperatively too.'
yield 1
def other_stuff():
for i in xrange(5):
print 'I am running cooperatively.'
yield 1
s = fibra.Schedule()
s.register_plugin(fibra.plugins.sleep.SleepPlugin())
s.register_plugin(fibra.plugins.nonblock.NonBlockPlugin())
s.install(stuff())
s.install(other_stuff())
while s.tick(): pass
Friday, November 16, 2007
Cooperative + Preemptive Concurrency
I've just uploaded Fibra 2 to the cheeseshop. Fibra 2 includes the promised non-blocking plugin, which allows a generator based task to momentarily run in a seperate thread.
Subscribe to:
Post Comments (Atom)
Popular Posts
-
I've just seen and used a brilliant ssh option. The command: sudo ssh -D localport user@externalhost will set up a local SOCKS proxy l...
-
Working with multiple threads is often a necessary evil. This is how I do it safely inside a Unity3D component. There are only certain time...
-
Update: This is another planet shader, with more physical fidelity. Shader "Planet" { Properties { _MainTex ("Di...
-
When you start working with threads in your Unity3D project, you will discover that many things need to be done in the main loop. For exampl...
-
Space is awesome. Especially when it is generated using Perlin noise, and some cool shaders. You can try it out over here.
-
Possibly slightly more correct lighting. The rim light is now only applied in the direction of the sun, rather than being purely based on v...
-
So, you've created a car prefab using WheelCollider components, and now you can apply a motorTorque to make the whole thing move along. ...
-
It is not an official port, but a very good replica. This is one of my favorite games, and I don't have many. It's deep, difficult, ...
-
Summary: NodeJS wins. Test Program ab -n 10000 -c 5 http://localhost/ Gevent Code from gevent import wsgi class WebServer(object): ...
-
Thank to Adrian Boeing I was inspired this morning to hack together a ripple shader for Unity3D. Thanks for the math Adrian. You can see t...
5 comments:
Is this more similar to Erlang or stackless?
I haven't used Erlang, and have only had a cursory glance over stackless, so I can't really answer that question.
However, I can say that I have been inspired what I've read about these other technologies.
The Home Page link on Cheeseshop is dead unfortunately.
Oops. Fixed.
The "Fibra 2" link at the top of this page is broken. It links to http://cheeseshop.python.org/pypi/fibra/2, which says "Not Found".
Post a Comment