]> git.lizzy.rs Git - dragonfireclient.git/blob - src/jthread/win32/jsemaphore.cpp
Fix log threadname lookup handling not beeing threadsafe
[dragonfireclient.git] / src / jthread / win32 / jsemaphore.cpp
1 /*
2 Minetest
3 Copyright (C) 2013 sapier, < sapier AT gmx DOT net >
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU Lesser General Public License as published by
7 the Free Software Foundation; either version 2.1 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public License along
16 with this program; if not, write to the Free Software Foundation, Inc.,
17 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19 #include "jthread/jsemaphore.h"
20
21 JSemaphore::JSemaphore() {
22         m_hSemaphore = CreateSemaphore(
23                         0,
24                         0,
25                         MAX_SEMAPHORE_COUNT,
26                         0);
27 }
28
29 JSemaphore::~JSemaphore() {
30         CloseHandle(&m_hSemaphore);
31 }
32
33 JSemaphore::JSemaphore(int initval) {
34         m_hSemaphore = CreateSemaphore(
35                         0,
36                         initval,
37                         MAX_SEMAPHORE_COUNT,
38                         0);
39 }
40
41 void JSemaphore::Post() {
42         ReleaseSemaphore(
43                         m_hSemaphore,
44                         1,
45                         0);
46 }
47
48 void JSemaphore::Wait() {
49         WaitForSingleObject(
50                         m_hSemaphore,
51                         INFINITE);
52 }
53
54 int JSemaphore::GetValue() {
55
56         long int retval = 0;
57         ReleaseSemaphore(
58                         m_hSemaphore,
59                         0,
60                         &retval);
61
62         return retval;
63 }
64