-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmutex.h
More file actions
48 lines (39 loc) · 838 Bytes
/
mutex.h
File metadata and controls
48 lines (39 loc) · 838 Bytes
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#ifndef MUTEX_H_
#define MUTEX_H_
#include <string>
#include <sys/mman.h>
#include <unistd.h>
namespace tinyco {
class Mutex {
public:
virtual int InitMtx(void *arg) = 0;
virtual int TryLock() = 0;
virtual int Unlock() = 0;
virtual int ForcedUnlockIfNeed(void *check_data) { return 0; }
};
class DummyMtx : public Mutex {
public:
int InitMtx(void *arg) { return 0; }
virtual int TryLock() { return 0; }
virtual int Unlock() { return 0; }
};
class FileMtx : public Mutex {
public:
int InitMtx(void *arg);
virtual int TryLock();
virtual int Unlock();
private:
int fd_;
};
class AtomicMtx : public Mutex {
public:
int InitMtx(void *arg);
virtual ~AtomicMtx();
virtual int TryLock();
virtual int Unlock();
virtual int ForcedUnlockIfNeed(void *check_data);
private:
uint64_t *ptr_;
};
}
#endif