Skip to main content

APAR

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
    Temporary Fix


    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.