document.write('<link rel="stylesheet" href="http://gist.github.com/stylesheets/gist/embed.css"/>')





document.write('<div id=\"gist-129601\" class=\"gist\">\n  \n  \n    \n            \n\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n          \n          \n          \n            <div class=\"gist-highlight\"><pre><div class=\"line\" id=\"LC1\"><span class=\"k\">def<\/span> <span class=\"nf\">consume<\/span><span class=\"p\">(<\/span><span class=\"o\">*<\/span><span class=\"n\">types<\/span><span class=\"p\">,<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">block<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC2\">&nbsp;&nbsp;<span class=\"n\">filter_types<\/span><span class=\"p\">(<\/span><span class=\"n\">types<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC3\">&nbsp;&nbsp;<span class=\"vi\">@t<\/span><span class=\"o\">.<\/span><span class=\"n\">buf_consumer<\/span><span class=\"p\">(<\/span><span class=\"n\">buf_consumer<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC4\">&nbsp;&nbsp;<span class=\"k\">begin<\/span><\/div><div class=\"line\" id=\"LC5\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"kp\">true<\/span><span class=\"p\">)<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC6\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@t<\/span><span class=\"o\">.<\/span><span class=\"n\">sleep<\/span> <span class=\"c1\"># the tricky little trickster<\/span><\/div><div class=\"line\" id=\"LC7\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">work<\/span> <span class=\"o\">=<\/span> <span class=\"vi\">@t<\/span><span class=\"o\">.<\/span><span class=\"n\">work<\/span><span class=\"p\">(<\/span><span class=\"n\">probe_consumer<\/span><span class=\"p\">,<\/span> <span class=\"n\">rec_consumer<\/span><span class=\"p\">(<\/span><span class=\"n\">block<\/span><span class=\"p\">))<\/span><\/div><div class=\"line\" id=\"LC8\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"vi\">@done<\/span> <span class=\"o\">||<\/span> <span class=\"n\">work<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC9\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">break<\/span><\/div><div class=\"line\" id=\"LC10\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC11\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC12\">&nbsp;&nbsp;<span class=\"k\">ensure<\/span><\/div><div class=\"line\" id=\"LC13\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@t<\/span><span class=\"o\">.<\/span><span class=\"n\">stop<\/span><\/div><div class=\"line\" id=\"LC14\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@t<\/span><span class=\"o\">.<\/span><span class=\"n\">work<\/span><span class=\"p\">(<\/span><span class=\"n\">probe_consumer<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC15\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC16\"><span class=\"k\">end<\/span><\/div><\/pre><\/div>\n          \n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"http://gist.github.com/raw/129601/cfff2d696f5bf26e260dcba9ad81f1e7db592528/gistfile1.rb\" style=\"float:right;\">view raw<\/a>\n          <a href=\"http://gist.github.com/129601#file_gistfile1.rb\" style=\"float:right;margin-right:10px;color:#666\">gistfile1.rb<\/a>\n          <a href=\"http://gist.github.com/129601\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n    \n  \n<\/div>\n')
