<?xml version="1.0" encoding="UTF-8"?>

<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns="http://purl.org/rss/1.0/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
>

  <channel rdf:about="http://lwn.net/headlines/172844/">
    <title>LWN: Comments on "The kevent interface"</title>
    <link>http://lwn.net/Articles/172844/</link>
    <description>
This is a special feed containing comments posted
to the individual LWN article titled &quot;The kevent interface&quot;.

    </description>

    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>2</syn:updateFrequency>
    <items>
      <rdf:Seq>
	<rdf:li resource="http://lwn.net/Articles/174259/rss" />
      
      </rdf:Seq>
    </items>

  </channel>
    <item rdf:about="http://lwn.net/Articles/174259/rss">
      <title>The kevent interface</title>
      <link>http://lwn.net/Articles/174259/rss</link>
      <dc:date>2006-03-03T06:20:23+00:00</dc:date>
      <dc:creator>theraphim</dc:creator>
      <description>
      Some time ago I've tried to write some multithreaded server which operates on filedescriptors and timeouts.&lt;br&gt;
So, each thread running one processing loop&lt;br&gt;
while (wait_for_event_on_fd_or_timeout(...)) { ... }&lt;br&gt;
&lt;p&gt;
While filedescriptors are actually sockets (and it's obvious what to do with them) timeouts is a queue of events. While processing some other event in some other thread there might be need to add or remove timeout. And it can land on top of the heap or sink lower.&lt;br&gt;
&lt;p&gt;
The only way I found to do this without any event-like objects is - add one end of pipe to epoll fd of wait_... and dedicate additional thread for timeout management. When timeout occurs, just write 1 char to pipe (and some thread will definitely wake up).&lt;br&gt;
      
      </description>
    </item>
</rdf:RDF>

