![]() |
![]() |
|
|
What Are Multithreading and Multicontexting
The BEA Tuxedo system allows you to use a single process to perform multiple tasks simultaneously. The programming techniques for implementing this sort of process usage are multithreading and multicontexting. This topic provides basic information about these techniques:
Multithreading is the inclusion of more than one unit of execution in a single process. In a multithreaded application, multiple simultaneous calls can be made from the same process. For example, an individual process is not limited to one outstanding tpcall().
In a server, multithreading requires multicontexting except when application-created threads are used in a singled-context server. The only way to create a multithreaded, single-context application is to use application-created threads.
The BEA Tuxedo system supports multithreaded applications written in C. It does not support multithreaded COBOL applications.
The following diagram shows how a multithreaded client can issue calls to three servers simultaneously.
Sample Multithreaded Process
In a multithreaded application, multiple service-dispatched threads are available in the same server, which means that fewer servers need to be started for that application.
The following diagram shows how a server process can dispatch multiple threads to different clients simultaneously.
Multiple Service Threads Dispatched in One Server Process
A context is an association to a domain. Multicontexting is the ability of a single process to have one of the following:
Multicontexting can be used in both clients and servers. When used in servers, multicontexting implies the use of multithreading, as well.
For a more complete list of the characteristics of a context, see "Context Attributes" in one of the following sections:
The BEA Tuxedo system supports multicontexted applications written in either C or COBOL. Multithreaded applications, however, are supported only in C.
The following diagram shows how a multicontexted client process works within a domain. Each arrow represents an outstanding call to a server.
Multicontexted Process in Two Domains
Licensing a Multithreaded or Multicontexted Application
For licensing purposes, each context is counted as one user. Additional licenses are not required to accommodate multiple threads within one context. For example:
![]() |
![]() |
![]() |
|
Copyright © 2000 BEA Systems, Inc. All rights reserved.
|