Bug 43150

Summary: Investigate using the thread pool instead of a dedicated thread for WorkQueue on Windows
Product: WebKit Reporter: Adam Roben (:aroben) <aroben>
Component: WebKit2Assignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: abarth, andersca, eric, sam, webkit.review.bot
Priority: P2 Keywords: InRadar, PlatformOnly
Version: 528+ (Nightly build)   
Hardware: PC   
OS: Windows XP   
Bug Depends on:    
Bug Blocks: 42826    
Attachments:
Description Flags
Use the Windows thread pool instead of a dedicated thread for WorkQueue on Windows andersca: review+

Description Adam Roben (:aroben) 2010-07-28 14:51:29 PDT
We should investigate using the Windows thread pool [1] instead of a dedicated thread for WorkQueue on Windows. This would be more similar to how WorkQueue works on Mac, and would hopefully improve performance overall. We'd probably implement this by using ::RegisterWaitForSingleObject.

1. http://msdn.microsoft.com/en-us/library/ms686756(v=VS.85).aspx
Comment 1 Adam Roben (:aroben) 2010-07-28 14:52:20 PDT
<rdar://problem/8247280>
Comment 2 Adam Roben (:aroben) 2010-08-05 09:35:05 PDT
We probably wouldn't want to do this until we had switched to using an I/O completion port in WorkQueue (bug 43148).

But I'm not so sure this will work well for us, at least not with ::RegisterWaitForSingleObject. That function will cause a new worker thread to be spawned every time the I/O completion port is signaled, even if another thread is already processing a message from the completion port. This is OK for correctness, as the worker thread will then immediately block on ::GetQueuedCompletionStatus until the other thread(s) finish their work. But it could mean that lots of threads end up sitting around blocked on ::GetQueuedCompletionStatus if it takes longer for a message to be processed than it takes for the completion port to get signaled again.
Comment 3 Adam Roben (:aroben) 2010-08-27 09:25:50 PDT
Created attachment 65721 [details]
Use the Windows thread pool instead of a dedicated thread for WorkQueue on Windows
Comment 4 Anders Carlsson 2010-08-29 14:45:07 PDT
Comment on attachment 65721 [details]
Use the Windows thread pool instead of a dedicated thread for WorkQueue on Windows

r+
Comment 5 Adam Roben (:aroben) 2010-08-31 10:59:13 PDT
Committed r66506: <http://trac.webkit.org/changeset/66506>