dbertoni    00/07/21 12:17:36

  Modified:    c/samples/ThreadSafe ThreadSafe.cpp
  Log:
  Added terminator function calls.
  
  Revision  Changes    Path
  1.5       +30 -23    xml-xalan/c/samples/ThreadSafe/ThreadSafe.cpp
  
  Index: ThreadSafe.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/samples/ThreadSafe/ThreadSafe.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ThreadSafe.cpp    2000/06/15 15:32:53     1.4
  +++ ThreadSafe.cpp    2000/07/21 19:17:34     1.5
  @@ -131,32 +131,35 @@
   
        std::vector<HANDLE> hThreads;
        hThreads.reserve(nThreads);
  -     int i=0;
  +     int i = 0;
        
        try
        {
                cout << endl << "Clock before starting threads: " << clock() << 
endl;
   
                for (i=0; i< nThreads; i++)
  -                     {
  -                             HANDLE hThread;
  -                             DWORD  threadID;
  +             {
  +                     HANDLE hThread;
  +                     DWORD  threadID;
   
  -                             hThread = CreateThread(
  +                     hThread = CreateThread(
                                        0, dwStackSize,
                                        lpStartAddress,                         
              // pointer to thread function
                                        reinterpret_cast<LPVOID>(i),    // 
argument for new thread
                                        dwCreationFlags,                        
              // creation flags
                                        &threadID);
  -                             assert(hThread != 0);
  -                             hThreads.push_back(hThread);
  -                     }
  +                     assert(hThread != 0);
  +                     hThreads.push_back(hThread);
  +             }
  +
                WaitForMultipleObjects(hThreads.size(), &hThreads[0], TRUE, 
INFINITE);
   
                cout << endl << "Clock after threads: " << clock() << endl;
   
  -             for (i=0; i< nThreads; i++)
  +             for (i = 0; i < nThreads; ++i)
  +             {
                        CloseHandle(hThreads[i]);
  +             }
        }
        catch(...)
        {
  @@ -185,17 +188,17 @@
                        XSLTEngineImpl::Initialize();
   
                        // Create the support objects required to run the 
processor...
  -                     DOMSupportDefault                                       
ssDOMSupport;
  -                     XercesParserLiaison                                   
ssParserLiaison(ssDOMSupport);
  -                     XPathSupportDefault                                   
ssXPathSupport(ssDOMSupport);
  +                     DOMSupportDefault                               
ssDOMSupport;
  +                     XercesParserLiaison                             
ssParserLiaison(ssDOMSupport);
  +                     XPathSupportDefault                             
ssXPathSupport(ssDOMSupport);
                        XSLTProcessorEnvSupportDefault  
ssXSLTProcessorEnvSupport;
  -                     XObjectFactoryDefault                         
ssXObjectFactory(ssXSLTProcessorEnvSupport,
  -                                                                             
                                                                 
ssXPathSupport);
  -                     XPathFactoryDefault                                   
ssXPathFactory;
  +                     XObjectFactoryDefault                   
ssXObjectFactory(ssXSLTProcessorEnvSupport,
  +                                                                             
                                         ssXPathSupport);
  +                     XPathFactoryDefault                             
ssXPathFactory;
   
                        // Create a processor...
  -      // This processor is used to compile the stylesheet and the source 
document. 
  -      // Each thread uses its own processor to perform a transformation.
  +                     // This processor is used to compile the stylesheet and 
the source document. 
  +                     // Each thread uses its own processor to perform a 
transformation.
   
                        XSLTEngineImpl  ssProcessor(
                                                  ssParserLiaison,
  @@ -224,7 +227,7 @@
                        const XalanDOMString  theXMLFileName("birds.xml");
   
                        // Our stylesheet XML input document and XSL stylesheet
  -      XSLTInputSource   xmlDocSource(c_wstr(theXMLFileName));
  +                     XSLTInputSource   xmlDocSource(c_wstr(theXMLFileName));
                        XSLTInputSource         
xslStylesheetSource(c_wstr(theXSLFileName));
   
                        // Use the processor to create a StylesheetRoot for the 
specified
  @@ -236,14 +239,18 @@
                        assert(glbStylesheetRoot != 0);
                        
                        // Compile the XML source document as well. All threads 
will use
  -      // this binary representation of the source tree.
  +                     // this binary representation of the source tree.
                        glbDocSource = 
ssProcessor.getSourceTreeFromInput(xmlDocSource);
  -      assert(glbDocSource != 0);
  +                     assert(glbDocSource != 0);
   
  -      // Create and run the threads...
  -      // Each thread uses the same XalanNode and 
  -      // StylesheetRoot to perform a transformation.
  +                     // Create and run the threads...
  +                     // Each thread uses the same XalanNode and 
  +                     // StylesheetRoot to perform a transformation.
                        doThreads(10);
  +
  +                     // Call the static terminators...
  +                     XMLPlatformUtils::Terminate();
  +                     XSLTEngineImpl::Terminate();
                }
                catch(...)
                {
  
  
  

Reply via email to