home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / powergui / thread / improved / fixed.cpp < prev    next >
C/C++ Source or Header  |  1996-10-29  |  2KB  |  55 lines

  1. /***************************************************************
  2. * FILE NAME: fixed.cpp                                         *
  3. *                                                              *
  4. * DESCRIPTION:                                                 *
  5. *   Sample program demonstrating how ImprovedThread and        *
  6. *   ImprovedThreadFn classes solve problems demonstrated       *
  7. *   in broken.cpp.                                             *
  8. *                                                              *
  9. * COPYRIGHT:                                                   *
  10. *   Licensed Materials - Property of Solution Frameworks       *
  11. *   Copyright (C) 1996, Solution Frameworks                    *
  12. *   All Rights Reserved                                        *
  13. ***************************************************************/
  14. #include <iostream.h>
  15.  
  16. #include <ithread.hpp>
  17. #include <istring.hpp>
  18.  
  19. #include "improved.hpp"
  20.  
  21. struct MyClass {
  22. void foo ( )
  23.   {
  24.   cout << "MyClass::foo called\n";
  25.   }
  26. };
  27.  
  28. void main()
  29.   {
  30.   MyClass
  31.     myObject;
  32.  
  33.   //IThreadMemberFn<MyClass>
  34.   ThreadableMemberOf<MyClass>
  35.     // Here's an IThreadFn object on the stack (seems reasonable).
  36.     memberFn1( myObject, MyClass::foo ),
  37.     // Here's an IThreadFn object allocated on the heap.
  38.    //*memberFn2( new IThreadMemberFn<MyClass>( myObject, MyClass::foo ) );
  39.    *memberFn2( new ThreadableMemberOf<MyClass>( myObject, MyClass::foo ) );
  40.  
  41.   //IThread
  42.   ImprovedThread
  43.     thread1( &memberFn1 ),
  44.     thread2( memberFn2 );
  45.  
  46. #ifdef IC_PM
  47.   IThread::current().waitForAllThreads();
  48. #else
  49.   IThread::current().sleep(1000);
  50. #endif
  51.  
  52.   // We have to delete the object we allocated, right?
  53.   delete memberFn2;
  54.   }
  55.