Pools

This sample demonstrates use of the THREAD_POOL (ThreadPool) class. The sample queues up an asynchronous method call that is executed by a thread from the thread pool managed by the Common Language Runtime. The method "does some work" and then sets an event indicating that the work has finished. The main thread waits on the event and then exits.

Compiling

To compile the example:

  1. Launch EiffelStudio.
  2. Select Use existing Ace (control file) and click OK
  3. Browse to $ISE_EIFFEL\examples\dotnet\threading\pools\
  4. Choose the Ace file for the version of the .net framework you are running
  5. Choose the directory where the project will be compiled, by default the same directory containing the Ace file.
  6. Click OK.

Running

After you launch the sample, the following output appears: Main thread: Queuing an asynchronous operation. Main thread: Performing other operations. WorkItem thread: Performing asynchronous operation Main thread: Waiting for asynchronous operation to complete.

When the display is finished, the application wait for you to pressed the return key to finished the application.

Under the Hood

This application shows how to use the thread THREAD_POOL. An asynchronous thread is launched: return := {THREAD_POOL}.queue_user_work_item (create {WAIT_CALLBACK}.make (Current, $async_operation, l_async_operation_done))and is associated to the local variable l_async_operation_done. Both threads perform simultaneously some operations. The main thread wait for the asynchronous thread to complete his own operations return := l_async_operation_done.wait_one to close the application.

This sample uses the following .NET types:

  • THREAD_POOL
  • WAIT_CALLBACK
  • AUTO_RESET_EVENT

Notes

This sample is translated from the example located in the Samples\Technologies\Threading\Pools subdirectory of the .NET Framework SDK samples directory of Microsoft Visual Studio .NET.