[lkml]   [2000]   [Sep]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: thread rant [semi-OT]
    > In summary, when "multithreading" floats into your mind, think
    > "concurrency." Think very carefully about how you might simultaneously
    > exploit all of the independent resources in your computer. Due to the long
    > and complex history of OS development, a different API is usually required
    > to communicate with each device. (e.g. old-school UNIX has always handled
    > non-blocking network I/O with select(), but non-blocking disk I/O is
    > new and must be done with AIO or threads; and don't even ask about
    > asynchronous access to the graphics card =).

    Dan, another thing to consider with multithreading is that it is a way to
    avoid "convoy" effects if there is a nice priority mechanism for first in
    first out messaging. Until NT crufted in its IO Completion model it was
    highly prone to either starvation or convoy problems with certain problems.
    If you fired off reads on several interfaces which all experienced about the
    same problem the first on in the array searched by the multiple object
    wait function was more likely to get serviced than the others. The initial
    solution reordered the list each pass through the wait. IO Completion
    actually added in first in first out messaging for all the messages
    reaching that particular wait for io completion call. This made a VERY
    measureable improvement in performance overall. You can run into
    the same problems with psuedo-threading in state machines with
    polling loops only it's a whole lot uglier. (Been there, done that, kicked
    myself, bought the teeshirt in disgrace, and retreated to a proper

    (Heh, incidentally I was rather surprised by the time I hit NT tasking
    to discover its array based message handling. I was used to the
    FIFO message queueing on AmigaDOS that it enjoyed from day
    zero. So I wrote as if I had that on NT.... I learned the hard way.)


    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 12:38    [W:0.023 / U:19.536 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site