On 9/26/06, Alexey Varlamov <[EMAIL PROTECTED]> wrote:
>Just to be clear: I suggest we apply new_queued_cond_var.patch >attached to HARMONY-1519 - provided that Artem will answer >comments.
Hi, I went through both the patches apr_cond.patch and new_queued_cond_var.patch on H-1519. There is no perfect solution to implementing conditional waits on Windows due to well documented reasons. The original apr implementation was matching generations of releases to corresponding waits and the first patch improves it, by getting the last waiter to reset the manual event( which seems logical ). As Artem commented on the JIRA, even this has known issues...the loop is inefficient and there can be signal stealing and permanent waits due lack of atomicity between apr_thread_mutex_unlock() and WaitForSingleObject(). Artem's patch new_queued_cond_var.patch looks simple and new, using synchronized wait queues. Just from reading, it seemed like a good solution, there is no way ( at least for me )to understand that it is perfect without a lot of testing. These changes are a maintenance hazard. Are we planning to stay compatible with APR? I don't know if APR is still an active community. If so, we should not commit more changes, and ask on the APR list first. Thanks, Rana
