ウェブサービスのスレッド割り当て

今朝WCFのスレッドと関係がある情報を読みました。
サービスの関数を呼び出すクライエントがHTTPでサービスにデータを送信します。そのデータを受信してからWCFのライブラリーがその関数をスレッドに分配します。
The first question I had was: does WCF allow requests to be processed in separate threads and, if so, where are these threads obtained from. It seems that WCF does use separate threads (analogous to Java Servlet containers) and that these threads are obtained from the input/output pool of 1000 threads maintained by the OS.
In some cases, it seems that a service author wants the requests received for certain objects/methods to run only on specific threads. This is common, if the service will update a Windows form, which must be updated on the thread which created the form. In order to do this, the service is marked to use a synchronization context. Synchronization context is data stored in thread local storage. Thus, when a thread is started for a request, its Synchronization context is checked. If it does not match the context assigned to the service, then the call is marshalled to another thread. I am actually confused about why this code is needed for forms, as I would expect that the call to a UI method would automatically be marshalled to the dispatcher thread. It seems that this assertion is implementation-dependent. If the service has a reference to the form on the heap, then the service thread need not be the same as the form creation thread (the Windows message pump should send messages between the service host and the form Dispatcher thread). However, if the Form reference is not held by the service, and the service does not use the same thread as the form, then the WCF service would not know the Synchronization Context of the form or be able to marshal requests to it.
Custom SynchronizationContext subclasses are also possible. These might be useful for user-defined mappings from requests to threads. Examples in the Microsoft WCF Exam text are: a thread-pool with a user-defined number of threads exclusively for one service and a prioritization of requests (probably by placing the method/object in a priority queue which threads in a thread pool select from).