Division
of Work into a Client and a Server
With a client-server configuration, one thread
(the client) communicates requests to
another thread (the server), and the
other thread responds. The split into client and server might provide a
performance improvement, because while the server is performing some
calculation, the client can be responding to the user; the client might be the
visible UI to the application, and the server might be the compute engine that
is performing the task in the background. There are plenty of examples of this
approach, such as having one thread to manage the redraw of the screen while
other threads handle the activities of the application. Another example is when
the client is a thread running on one sys-tem while the server is a thread
running on a remote system; web browsers and web servers are obvious, everyday
examples.
A big
advantage of this approach is the sharing of resources between multiple
clients. For example, a machine might have a single Ethernet port but have
multiple applications that need to communicate through that port. The client
threads would send requests to a server thread. The server thread would have
exclusive access to the Ethernet device and would be responsible for sending
out the packets from the clients and directing incom-ing packets to the
appropriate client in an orderly fashion.
This
client-server relationship can be represented as multiple clients: A,
communicat-ing with a server, B, as shown in Figure 3.20. Server B might also
control access to a set of resources, which are not explicitly included in the
diagram.
Implicit
in the client-server pattern is the notion that there will be multiple clients
seeking the attention of a single server. The single server could, of course,
be implemented using multiple threads.
The
client-server pattern does not improve responsiveness but represents a way of
sharing the work between multiple threads, especially where the server thread
actually does some work. Alternatively, it represents a way of sharing a common
resource between multiple clients (in which case any gains in throughput are a
fortunate by-product rather than a design goal).
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.