summaryrefslogtreecommitdiff
path: root/src/jthread
diff options
context:
space:
mode:
authorkwolekr <mirrorisim@gmail.com>2013-02-13 22:43:15 -0500
committerkwolekr <mirrorisim@gmail.com>2013-02-25 22:56:18 -0500
commitb9d8e59bbf727fcc1a073bbf27e5d1703b9490ef (patch)
tree629dba18aab743e66b88858f5385cf4ba36d0328 /src/jthread
parent6d0ea26c2d62c3774ff384cf1bfc2a3372b49a3b (diff)
downloadminetest-b9d8e59bbf727fcc1a073bbf27e5d1703b9490ef.tar.gz
minetest-b9d8e59bbf727fcc1a073bbf27e5d1703b9490ef.tar.bz2
minetest-b9d8e59bbf727fcc1a073bbf27e5d1703b9490ef.zip
Add emerge.cpp, initial EmergeThread changes
- Neatly placed all emerge related code into a new file, emerge.cpp - Greatly cleaned up the code in EmergeThread::Thread() - Reworked Emerge queue. Now an actual std::queue of v3s16 block positions - Removed the completely unnecessary map of peer ids requesting blocks
Diffstat (limited to 'src/jthread')
-rw-r--r--src/jthread/jmutex.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/jthread/jmutex.h b/src/jthread/jmutex.h
index 9ce013096..6675162a5 100644
--- a/src/jthread/jmutex.h
+++ b/src/jthread/jmutex.h
@@ -67,4 +67,54 @@ private:
bool initialized;
};
+#ifdef _WIN32
+
+class Event {
+ HANDLE hEvent;
+
+public:
+ Event() {
+ hEvent = CreateEvent(NULL, 0, 0, NULL);
+ }
+
+ ~Event() {
+ CloseHandle(hEvent);
+ }
+
+ void wait() {
+ WaitForSingleObject(hEvent, INFINITE);
+ }
+
+ void signal() {
+ SetEvent(hEvent);
+ }
+}
+
+#else
+
+#include <semaphore.h>
+
+class Event {
+ sem_t sem;
+
+public:
+ Event() {
+ sem_init(&sem, 0, 0);
+ }
+
+ ~Event() {
+ sem_destroy(&sem);
+ }
+
+ void wait() {
+ sem_wait(&sem);
+ }
+
+ void signal() {
+ sem_post(&sem);
+ }
+};
+
+#endif
+
#endif // JMUTEX_H