[Mono-bugs] [Bug 659003] New: ThreadPool.RegisterWaitForSingleObject should not consume thread pool threads

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Sat Dec 11 07:57:28 EST 2010



           Summary: ThreadPool.RegisterWaitForSingleObject should not
                    consume thread pool threads
    Classification: Mono
           Product: Mono: Class Libraries
           Version: 2.8.x
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: CORLIB
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: sgroot at tkl.iis.u-tokyo.ac.jp
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---

Created an attachment (id=404454)
 --> (http://bugzilla.novell.com/attachment.cgi?id=404454)
Sample application demonstrating the issue

User-Agent:       Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64;

In Mono, the ThreadPool.RegisterWaitForSingleObject function simply calls
QueueUserWorkItem with a callback that waits for the object, which consumes a
thread pool thread.

In the Microsoft .Net Framework, RegisterWaitForSingleObject uses a single
thread to wait for all registered objects, and only dispatches a thread pool
thread once a wait handle is signalled. This means that you can use
RegisterWaitForSingleObject to wait for events that may not be signalled for a
long time without consuming thread pool threads.

Reproducible: Always

Steps to Reproduce:
Run the attached sample application, which exhausts the threads in the thread
pool by calling RegisterWaitForSingleObject, and then attempts to call
Actual Results:  
The thread pool threads are exhausted by the calls to

Expected Results:  
I expected RegisterWaitForSingleObject not to consume thread pool threads so
the work item would be able to run, as is the case on .Net

Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.

More information about the mono-bugs mailing list