Skip to content

Commit dd0400e

Browse files
committed
[perf] remove thread config fair_lock_enable_, for the reason of no use.
1 parent 91a4690 commit dd0400e

8 files changed

Lines changed: 44 additions & 60 deletions

File tree

cmake/CGraph-env-include.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ file(GLOB_RECURSE CGRAPH_PROJECT_SRC_LIST "${CGRAPH_PROJECT_ROOT_DIR}/src/*.cpp"
99

1010
IF(APPLE)
1111
# 非mac平台,暂时不支持自动生成session信息
12-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64 -O2 \
12+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64 \
1313
-finline-functions -Wno-deprecated-declarations -Wno-c++17-extensions")
1414
add_definitions(-D_ENABLE_LIKELY_)
1515
ELSEIF(UNIX)

src/UtilsCtrl/ThreadPool/Thread/UThreadBase.h

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,40 @@ class UThreadBase : public UThreadObject {
118118
total_task_num_ = 0;
119119
}
120120

121+
/**
122+
* 执行单个消息
123+
* @return
124+
*/
125+
virtual CVoid processTask() = 0;
126+
127+
128+
/**
129+
* 获取批量执行task信息
130+
*/
131+
virtual CVoid processTasks() = 0;
132+
133+
134+
/**
135+
* 循环处理任务
136+
* @return
137+
*/
138+
CStatus loopProcess() {
139+
CGRAPH_FUNCTION_BEGIN
140+
CGRAPH_ASSERT_NOT_NULL(config_)
141+
142+
if (config_->batch_task_enable_) {
143+
while (done_) {
144+
processTasks(); // 批量任务获取执行接口
145+
}
146+
} else {
147+
while (done_) {
148+
processTask(); // 单个任务获取执行接口
149+
}
150+
}
151+
152+
CGRAPH_FUNCTION_END
153+
}
154+
121155

122156
/**
123157
* 设置线程优先级,仅针对非windows平台使用

src/UtilsCtrl/ThreadPool/Thread/UThreadPrimary.h

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ class UThreadPrimary : public UThreadBase {
6767
CGRAPH_FUNCTION_BEGIN
6868
CGRAPH_ASSERT_INIT(true)
6969
CGRAPH_ASSERT_NOT_NULL(pool_threads_)
70-
CGRAPH_ASSERT_NOT_NULL(config_)
7170

7271
/**
7372
* 线程池中任何一个primary线程为null都不可以执行
@@ -81,25 +80,12 @@ class UThreadPrimary : public UThreadBase {
8180
CGRAPH_RETURN_ERROR_STATUS("primary thread is null")
8281
}
8382

84-
if (config_->calcBatchTaskRatio()) {
85-
while (done_) {
86-
processTasks(); // 批量任务获取执行接口
87-
}
88-
} else {
89-
while (done_) {
90-
processTask(); // 单个任务获取执行接口
91-
}
92-
}
93-
83+
status = loopProcess();
9484
CGRAPH_FUNCTION_END
9585
}
9686

9787

98-
/**
99-
* 获取并执行任务
100-
* @return
101-
*/
102-
CVoid processTask() {
88+
CVoid processTask() override {
10389
UTask task;
10490
if (popTask(task) || popPoolTask(task) || stealTask(task)) {
10591
runTask(task);
@@ -109,10 +95,7 @@ class UThreadPrimary : public UThreadBase {
10995
}
11096

11197

112-
/**
113-
* 获取批量执行task信息
114-
*/
115-
CVoid processTasks() {
98+
CVoid processTasks() override {
11699
UTaskArr tasks;
117100
if (popTask(tasks) || popPoolTask(tasks) || stealTask(tasks)) {
118101
// 尝试从主线程中获取/盗取批量task,如果成功,则依次执行
@@ -201,7 +184,7 @@ class UThreadPrimary : public UThreadBase {
201184
}
202185

203186
private:
204-
int index_ {CGRAPH_SECONDARY_THREAD_COMMON_ID}; // 线程index
187+
int index_; // 线程index
205188
UWorkStealingQueue work_stealing_queue_; // 内部队列信息
206189
std::vector<UThreadPrimary *>* pool_threads_; // 用于存放线程池中的线程信息
207190

src/UtilsCtrl/ThreadPool/Thread/UThreadSecondary.h

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -61,26 +61,13 @@ class UThreadSecondary : public UThreadBase {
6161
CStatus run() override {
6262
CGRAPH_FUNCTION_BEGIN
6363
CGRAPH_ASSERT_INIT(true)
64-
CGRAPH_ASSERT_NOT_NULL(config_)
65-
66-
if (config_->calcBatchTaskRatio()) {
67-
while (done_) {
68-
processTasks(); // 批量任务获取执行接口
69-
}
70-
} else {
71-
while (done_) {
72-
processTask(); // 单个任务获取执行接口
73-
}
74-
}
7564

65+
status = loopProcess();
7666
CGRAPH_FUNCTION_END
7767
}
7868

7969

80-
/**
81-
* 任务执行函数,从线程池的任务队列中获取信息
82-
*/
83-
CVoid processTask() {
70+
CVoid processTask() override {
8471
UTask task;
8572
if (popPoolTask(task)) {
8673
runTask(task);
@@ -90,10 +77,7 @@ class UThreadSecondary : public UThreadBase {
9077
}
9178

9279

93-
/**
94-
* 批量执行n个任务
95-
*/
96-
CVoid processTasks() {
80+
CVoid processTasks() override {
9781
UTaskArr tasks;
9882
if (popPoolTask(tasks)) {
9983
runTasks(tasks);

src/UtilsCtrl/ThreadPool/UThreadPool.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -164,10 +164,6 @@ CBool UThreadPool::isInit() const {
164164

165165

166166
CIndex UThreadPool::dispatch(CIndex origIndex) {
167-
if (unlikely(config_.fair_lock_enable_)) {
168-
return CGRAPH_DEFAULT_TASK_STRATEGY; // 如果开启fair lock,则全部写入 pool的queue中,依次执行
169-
}
170-
171167
CIndex realIndex = 0;
172168
if (CGRAPH_DEFAULT_TASK_STRATEGY == origIndex) {
173169
/**

src/UtilsCtrl/ThreadPool/UThreadPoolConfig.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ struct UThreadPoolConfig : public UThreadObject {
3131
int secondary_thread_priority_ = CGRAPH_SECONDARY_THREAD_PRIORITY;
3232
bool bind_cpu_enable_ = CGRAPH_BIND_CPU_ENABLE;
3333
bool batch_task_enable_ = CGRAPH_BATCH_TASK_ENABLE;
34-
bool fair_lock_enable_ = CGRAPH_FAIR_LOCK_ENABLE;
3534
bool monitor_enable_ = CGRAPH_MONITOR_ENABLE;
3635

3736

@@ -45,17 +44,6 @@ struct UThreadPoolConfig : public UThreadObject {
4544
return range;
4645
}
4746

48-
49-
/**
50-
* 计算是否开启批量任务
51-
* 开启条件:开关批量开启,并且 未开启非公平锁
52-
* @return
53-
*/
54-
bool calcBatchTaskRatio() const {
55-
bool ratio = (this->batch_task_enable_) && (!this->fair_lock_enable_);
56-
return ratio;
57-
}
58-
5947
friend class UThreadPrimary;
6048
friend class UThreadSecondary;
6149
};

src/UtilsCtrl/ThreadPool/UThreadPoolDefine.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,8 @@ static const bool CGRAPH_BATCH_TASK_ENABLE = false;
6767
static const int CGRAPH_MAX_LOCAL_BATCH_SIZE = 2; // 批量执行本地任务最大值
6868
static const int CGRAPH_MAX_POOL_BATCH_SIZE = 2; // 批量执行通用任务最大值
6969
static const int CGRAPH_MAX_STEAL_BATCH_SIZE = 2; // 批量盗取任务最大值
70-
static const bool CGRAPH_FAIR_LOCK_ENABLE = false; // 是否开启公平锁(非必须场景不建议开启,开启后CGRAPH_BATCH_TASK_ENABLE无效)
7170
static const int CGRAPH_SECONDARY_THREAD_TTL = 10; // 辅助线程ttl,单位为s
72-
static const bool CGRAPH_MONITOR_ENABLE = true; // 是否开启监控程序(如果不开启,辅助线程策略将失效。建议开启
71+
static const bool CGRAPH_MONITOR_ENABLE = false; // 是否开启监控程序(如果不开启,辅助线程策略将失效)
7372
static const int CGRAPH_MONITOR_SPAN = 5; // 监控线程执行间隔,单位为s
7473
static const bool CGRAPH_BIND_CPU_ENABLE = true; // 是否开启绑定cpu模式(仅针对主线程)
7574
static const int CGRAPH_PRIMARY_THREAD_POLICY = CGRAPH_THREAD_SCHED_OTHER; // 主线程调度策略

tutorial/T09-Aspect.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ void tutorial_aspect() {
1919

2020
GElementPtr a, b_region, c = nullptr;
2121
b_region = pipeline->createGGroup<GRegion>({
22-
pipeline->createGNode<MyNode1>(GNodeInfo({},"nodeB1", 1)),
22+
pipeline->createGNode<MyNode1>(GNodeInfo({}, "nodeB1", 1)),
2323
pipeline->createGNode<MyNode2>(GNodeInfo({}, "nodeB2", 2))
2424
});
2525

0 commit comments

Comments
 (0)