Ah, that does help clear things up. I'd been doing a EM.next_tick block (basically the same thing as EM.schedule) to get I/O calls out to the reactor thread, but of course you can't really do that if you are calling something in a gem that will block (rule #1!).
At one point I looked in to doing an EventMachine based client for Riak, and got a reply from Mathias saying: Be aware of the limitations of using fibers though, their stacks only fit 4K so keep your stacks small Which is just another gotcha to consider when working into the threaded/fiberous frontier lands of ruby. Thanks, Sean On Apr 18, 2012, at 2:41 PM, David Graham wrote: > Thanks for finding that video! > > "If you're sending something over the network, it always has to happen on the > reactor thread." > > He's referring to the send_data method. It's true that you can only write > data back to clients connected to your EventMachine server on the reactor > thread. That's why defer runs the operation block on the thread pool and the > callback block on the reactor thread. > > But if you open your own blocking IO socket to some other server, like > ActiveRecord does, you're free to do IO on threads in the EventMachine thread > pool. > > I found this example from James Tucker, one of the EventMachine maintainers, > that demonstrates something very similar to what I showed last night. It's > using DataMapper rather than ActiveRecord, but it shows the query happening > on the thread pool with the results being written back to the client on the > reactor thread. > > https://groups.google.com/d/msg/eventmachine/pyjbJ4H3f7I/RTrnxEShTm4J > > David > > > On Wed, Apr 18, 2012 at 10:36 AM, Sean McKibben <[email protected]> wrote: > > Great talk, David. At one point I mentioned something about IO having to be > > done on the reactor thread, but didn't know why. I still don't, but that > > advice came from 14:00 in to this video: > > http://www.confreaks.com/videos/555-scotlandruby2011-introduction-to-eventmachine-and-evented-programming > > "in production weird errors if you do IO from a non-reactor thread, yadda, > > yadda" (paraphrase) > > > > So it might just be voodoo paranoia, but "when you're dealing with > > concurrency, there's nothing wrong with being paranoid" > > > > Thanks again for the great presentation. The state machine approach really > > helped my thinking about EM coding (and good concurrency patterns in > > general). > > > > Sean > > > > On Apr 17, 2012, at 10:46 PM, David Graham wrote: > > > > Thanks to everyone who came out tonight. I had a great time presenting! > > > > The slides are on Speaker Deck: > > http://speakerdeck.com/u/dgraham/p/eventmachine-server-design-with-xmpp > > > > David > > > > > > On Mon, Apr 16, 2012 at 6:23 PM, Marty Haught <[email protected]> wrote: > > > > Tomorrow is our April meeting for Boulder Ruby. We'll be meeting on > > > > Tuesday the 17th at 7pm at Pivotal Labs (directions below). They are > > > > generous hosting food and drink for the meeting so thank them for > > > > their support. Food will arrive at 6:45. > > > > > > David Graham will lead off our meeting talking about building an XMPP > > > > server with Event Machine. He'll dig into the streaming XML parsers, > > > > state machines, asynchronous queues, fibers, and thread pools needed > > > > to build a scalable, event-based chat server. > > > > > > Following that, David Kapp will speak about client-side template > > > > rendering. He’ll talk about what client-side rendering is, why you > > > > should care about it, give some examples, and talk about how to fit it > > > > into your projects. There are a lot of different libraries for this > > > > out there, and while the examples will be given using Handlebars.js, > > > > the general ideas should apply to any of them. > > > > > > http://boulderruby.org/meetings/2012/03/26/april-2012/ > > > > > > I look forward to seeing you all there. > > > > > > Cheers, > > > > Marty Haught > > > > http://boulderruby.org > > > > > > Directions: > > > > Pivotal Labs > > > > 1701 Pearl St > > > > Boulder, CO 80302 > > > > > > Use the 17th St entrance closer to the alley on the NE side of the > > > > intersection. You should see the Pivotal Labs logo in the window. The > > > > meeting space is upstairs. > > > > > > URL to google maps: http://bit.ly/fNTcZf > > > > _______________________________________________ > > > > Bdrg-members mailing list > > > > [email protected] > > > > http://rubyforge.org/mailman/listinfo/bdrg-members > > > > _______________________________________________ > > Bdrg-members mailing list > > [email protected] > > http://rubyforge.org/mailman/listinfo/bdrg-members > > > > >
_______________________________________________ Bdrg-members mailing list [email protected] http://rubyforge.org/mailman/listinfo/bdrg-members
