summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
Diffstat (limited to 'includes')
-rw-r--r--includes/HttpServer.h2
-rw-r--r--includes/Threads.h11
2 files changed, 12 insertions, 1 deletions
diff --git a/includes/HttpServer.h b/includes/HttpServer.h
index 3867252..37353ac 100644
--- a/includes/HttpServer.h
+++ b/includes/HttpServer.h
@@ -55,7 +55,7 @@ class HttpServer {
String m_local;
typedef std::list<Action *> ActionList;
ActionList m_actions;
- Lock m_actionsLock;
+ RWLock m_actionsLock;
friend class HttpWorker;
};
diff --git a/includes/Threads.h b/includes/Threads.h
index f6aed5a..67143ca 100644
--- a/includes/Threads.h
+++ b/includes/Threads.h
@@ -20,6 +20,17 @@ class Lock {
friend class Queue;
};
+class RWLock {
+ public:
+ RWLock();
+ ~RWLock() { pthread_rwlock_destroy(&m_lock); }
+ void enterR() { pthread_rwlock_rdlock(&m_lock); }
+ void enterW() { pthread_rwlock_wrlock(&m_lock); }
+ void leave() { pthread_rwlock_unlock(&m_lock); }
+ private:
+ pthread_rwlock_t m_lock;
+};
+
class ThreadHelper;
class Thread {