| APAR#: | II11851 |
| Component: | INFOAS400 - AS/400 Information |
| Release(s): | R540 |
Abstract
CLIENT ACCESS SUPPORT FOR MULTI-PROCESSOR PC'S & MULTI-THREADING
Error Description
** Last updated on May 17, 2006 **
This informational APAR describes the IBM support positions
on using Client Access on multi-processor PCs and on running
multi-threaded applications which use Client Access APIs.
Client Access for Windows 95/NT (XD1)
-------------------------------------
This product does not support the use of Client Access APIs
by multiple threads within a single application. Also, this
product is not supported on PCs which are multi-processor.
There are no plans to support these on this product in the
future.
Client Access Express for Windows (5769-XE1 or 5722-XE1)
--------------------------------------------------------
This product has been tested with multi-threaded test scenarios
using thread affinity. Thread affinity means that multiple
threads may use Client Access APIs (including ODBC),
but if they share Client Access resources, such assystem
handles, remote command handles, and connection handles,
they serialize (take turns with) use of them. Thread
affinity is supported with all Client Access APIs; however,
thread safety is only supported when using ODBC and OLE DB
at this time. Thread safety means applications share one or
more Client Access resources among multiple threads in an
independent way, without serializing use of them.
Note: Thread safety with ODBC is only supported when Express
V5R1M0 is installed. Thread safety with OLE DB is supported
with Express V5R1M0 with service pack SI01037 or later
installed. This allows connection pooling with IIS/ASP to
be used.
When writing an application that uses thread affinity, be
aware that there are different levels of Client Access
resources -- some resources use others -- and be sure to
serialize use of resources at every level. For example,
calling cwbCO_CreateSystem(), if successful, will give you
a Client Access resource to use, namely a cwbCO_SysHandle
(system handle). You may then pass this system handle to
cwbRC_StartSysEx(), to get a cwbRC_SysHandle (remote
command handle). If you call cwbRC_StartSysEx() twice,
each time passing the same system handle, you will have
two different remote command handles. HOWEVER, since
the same system handle was used in both calls, the same
underlying system object resource will be used by both
remote command handles. Therefore, you must serialize
use of the two remote command handles among multiple
threads as if they were the same resource.
Multi-thread applications (thread affintity only) are also
supported on multi-processor PCs. Testing has only been
done on some dual-processor PCs so far. Only ODBC and OLE DB
(with V5R1M0 and service pack SI01037 or later) are supported
with thread safety on multi-processor PCs.
iSeries Access for Linus
------------------------
The Linux ODBC driver is built with the same source code as
the Windows ODBC driver. All the iSeries Access ODBC drivers
handle multi-thread scenarios the same way. Since the Linux
ODBC driver was added V5R1, it is thread safe.
.NET Data Provider
------------------
The .NET Data Provider classes can be used by multiple threads
within a single process or application domain. The provider
handles static member variables in a thread-safe manner.
Instance members, however, are not guaranteed to be thread-safe.
An application using multiple threads must guard against
improper use of shared resources.
Problem Summary
Problem Conclusion
Comments
Information APAR
Circumvention
PTFs Available
Affected Modules
Affected Publications
Summary Information
| Status.............................................. | CLOSED CAN |
| HIPER............................................. | No |
| Component.................................... | |
| Failing Module............................... | |
| Reported Release........................ | R540 |
| Duplicate Of................................... |
- IBM disclaims all warranties, whether express or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. By furnishing this document, IBM grants no licenses to any related patents or copyrights. Copyright © 1996,1997,1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 IBM Corporation. Any trademarks and product or brand names referenced in this document are the property of their respective owners. Consult the Terms of use link for trademark information.
