Hi, I am working on a contrib module that uses RegisterDynamicBackgroundWorker API to create a couple of worker processes. For synchronization between the background worker processes I am using InitSharedLatch, SetLatch, WaitLatch APIs. One of the processes is supposed to wait for the latch, the other is supposed to set it. The system works perfectly fine as long as its run on Linux, however when tried on Windows, it fails giving the error: ResetEvent failed: error code 6 Error code 6 means invalid handle. Debugging reveals that the handle contains a valid value, however it seems that the handle is not accessible (was not created) in the process that is calling ResetEvent.
Debugging the issue lead me to the following comment on top of InitSharedLatch: * InitSharedLatch needs to be called in postmaster before forking child * processes, usually right after allocating the shared memory block * containing the latch with ShmemInitStruct. (The Unix implementation * doesn't actually require that, but the Windows one does.) In my case this is not true, I am calling InitSharedLatch in _PG_init which gets called at CREATE EXTENSION time. My question : Is there a way to get the latches API work on windows the way it is working on Linux? Best Regards -- -- *Abbas* Architect Ph: 92.334.5100153 Skype ID: gabbasb www.enterprisedb.co <http://www.enterprisedb.com/>m <http://www.enterprisedb.com/> *Follow us on Twitter* @EnterpriseDB Visit EnterpriseDB for tutorials, webinars, whitepapers <http://www.enterprisedb.com/resources-community> and more <http://www.enterprisedb.com/resources-community>