In this chapter we have examined at some length two specialized architectures for connection-oriented servers: preforking and prethreading. In so doing, we have seen a number of strategies for dealing effectively with interprocess communication, including signals, shared memory, named pipes, and condition variables . When designing a server to use under heavy loads, it's worth giving these architectures consideration and possibly benchmarking the alternative designs under typical loads. |