acl
3.5.3.0
thread_mutex.hpp
浏览该文件的文档.
1
#pragma once
2
#include "../acl_cpp_define.hpp"
3
#include "
noncopyable.hpp
"
4
5
#if !defined(_WIN32) && !defined(_WIN64)
6
# include <pthread.h>
7
# ifndef acl_pthread_mutex_t
8
# define acl_pthread_mutex_t pthread_mutex_t
9
# endif
10
#else
11
struct
acl_pthread_mutex_t
;
12
#endif
13
14
namespace
acl
{
15
16
/**
17
* 线程互斥锁
18
*/
19
class
ACL_CPP_API
thread_mutex
:
public
noncopyable
20
{
21
public
:
22
/**
23
* 构造方法
24
* @param recursive {bool} 是否启用递归锁方式
25
*/
26
thread_mutex
(
bool
recursive =
true
);
27
~
thread_mutex
(
void
);
28
29
/**
30
* 对线程锁进行加锁,一直到加锁成功或内部失败(一般不会失败,除非是系统问题)
31
* @return {bool} 返回 false 说明线程锁有问题
32
*/
33
bool
lock(
void
);
34
35
/**
36
* 尝试性加锁,无论成功与否都会立即返回
37
* @return {bool} 返回 true 表示加锁成功,返回 false 表示加锁失败
38
*/
39
bool
try_lock(
void
);
40
41
/**
42
* 解线程锁
43
* @return {bool} 返回 false 表示解锁失败,有可能之前并未加锁成功所致
44
*/
45
bool
unlock(
void
);
46
47
/**
48
* 获得 acl 中 C 版本的系统类型的线程锁
49
* @return {acl_pthread_mutex_t*}
50
*/
51
acl_pthread_mutex_t
* get_mutex(
void
)
const
;
52
53
private
:
54
acl_pthread_mutex_t
* mutex_;
55
#if !defined(_WIN32) && !defined(_WIN64)
56
pthread_mutexattr_t mutex_attr_;
57
#endif
58
};
59
60
class
ACL_CPP_API
thread_mutex_guard
:
public
noncopyable
61
{
62
public
:
63
thread_mutex_guard
(
thread_mutex
& mutex);
64
~
thread_mutex_guard
(
void
);
65
66
private
:
67
thread_mutex
& mutex_;
68
};
69
70
}
// namespace acl
acl::thread_mutex_guard
Definition:
thread_mutex.hpp:60
acl
Definition:
acl_cpp_init.hpp:4
acl::noncopyable
Definition:
noncopyable.hpp:6
noncopyable.hpp
acl::thread_mutex
Definition:
thread_mutex.hpp:19
ACL_CPP_API
#define ACL_CPP_API
Definition:
acl_cpp_define.hpp:16
acl_pthread_mutex_t
Definition:
acl_pthread.h:98
include
acl_cpp
stdlib
thread_mutex.hpp
生成于 2021年 九月 10日 星期五 11:14:44 , 为 acl使用
1.8.15