aboutsummaryrefslogtreecommitdiff
path: root/odb/details/win32/condition.ixx
blob: cad5c62caa1c4ba0abd1f3149458b26df764e9aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// file      : odb/details/win32/condition.ixx
// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
// license   : GNU GPL v2; see accompanying LICENSE file

#include <odb/details/win32/exceptions.hxx>

namespace odb
{
  namespace details
  {
    inline condition::
    ~condition ()
    {
      CloseHandle (event_);
    }

    inline condition::
    condition (mutex& mutex)
        : mutex_ (mutex), waiters_ (0), signals_ (0)
    {
      // Auto-reset event. Releases one waiting thread and automatically
      // resets the event state. If no threads are waiting the event
      // remains signalled.
      //
      event_ = CreateEvent (0, false, false, 0);

      if (event_ == 0)
        throw win32_exception ();
    }
  }
}