Messages in this thread |  | | | From | Ian D Romanick <> | | Subject | Re: Linus on Linux, Apache and Threads | | Date | Fri, 23 Apr 1999 09:14:30 -0700 (PDT) |
| |
> On Fri, 23 Apr 1999, Tony Gale wrote: > > On 23-Apr-99 Chris Wedgwood wrote: > > >> It ought to one of two things: > > >> > > >> - Use a thread to handle each request, all in one process. > > > > > > No, that would be insane. Perhaps use threads the way it now uses > > > processes, but not one thread per request -- that would be death as > > > far as performance goes. > > > > Depends. You can use a thread pool and queue requests which are then > > picked up by the threads. > > how do you propose to do that efficiently? is there a nice way in > Unix/Linux to hand out incoming network requests to a pool of threads?
Huh? It's not that hard of a problem. You have one (or several) thread that just reads from network sockets. They package up the requests and put them on the end of a queue. The other threads just pull requests off the head of the queue. The trick is all in waking up the sleeping threads when the queue becomes non-empty without having the "thundering herd" problem.
It is even possible, if you have only one thread adding to the queue, to implement the queue so that the writing thread doesn't need a lock. Only the reading threads need a lock. If you have multiple writing threads you would need a read lock and a write lock. This enables massive amounts of concurency, and is a huge win on mp systems. -- "With a touch more confidence and a liberal helping of ignorance I would have been a famous evangelist." -- Stranger In A Strange Land PLENTY of ignorance at http://www.cs.pdx.edu/~idr
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
|  |