On 04/20/2011 02:46 PM, Eric Blake wrote:
On 04/20/2011 03:14 AM, Hu Tao wrote:
> This prepares for the next patch.
>
> The bad is we have no way to check the return value for
> CreateMutex when it is used as a static initializer.
> ---
> src/util/threads-pthread.h | 5 +++++
> src/util/threads-win32.h | 5 +++++
> 2 files changed, 10 insertions(+), 0 deletions(-)
Then again, the next patch doesn't use VIR_MUTEX_INITIALIZER under WIN32
(it is only used in the fallback after gcc builtins and WIN32 native
functions are bypassed). So, even simpler is just leaving it undefined
for that platform, and deferring the problem of a working solution until
the next time (if ever) we think we need the usage pattern of a
static-initialized mutex to begin with.
In fact, I think that pthread_once/InitOnceExecuteOnce provides the
perfect pthread vs. WIN32 approach to one-time initialization without
relying on static initializers, and that it would be fairly easy to
write virOnce as the wrapper function that covers the underlying
functionality of both threading approaches.
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org