diff --git a/CMakeLists.txt b/CMakeLists.txt
index a61bec88..f4aa9a71 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,7 +10,7 @@ message("* * * * * * * * * * * * * * * * * * * * * * * * * * * * *")
cmake_minimum_required(VERSION 3.5.0)
-project(CGraph VERSION 3.2.4)
+project(CGraph VERSION 3.2.5)
if(NOT DEFINED CMAKE_CXX_STANDARD)
# CGraph默认使用C++11版本,推荐使用C++17版本。暂不支持C++11以下版本
diff --git a/README.md b/README.md
index cdebc17e..152c12a0 100644
--- a/README.md
+++ b/README.md
@@ -98,6 +98,8 @@ int main() {
> Python 版本
```python
+# pip install pycgraph
+
import time
from datetime import datetime
@@ -424,10 +426,11 @@ if __name__ == '__main__':
[2026.05.10 - v3.2.4 - Chunel]
* 优化 `pycgraph` 功能
-[2026.08.07 - v3.2.5 - Chunel]
+[2026.08.15 - v3.2.5 - Chunel]
* 优化调度性能
* 优化 `pycgraph` 功能
* 提供 lite 运行模式
+* 修改 `GSome` 使用方式
diff --git a/README_en.md b/README_en.md
index 0c8c49a6..338e866f 100644
--- a/README_en.md
+++ b/README_en.md
@@ -195,261 +195,3 @@ if __name__ == '__main__':
* [pybind11](https://github.com/pybind/pybind11) : Seamless operability between C++11 and Python
* The Python API binding feature of this project is implemented with pybind11
* [Bilibili Video: pybind11 practical implementation - how PyCGraph was built](https://www.bilibili.com/video/BV1ofLdz5EzX) | [Feishu document link](https://ilyryn6yei.feishu.cn/docx/YDfHdU9mfoTlnqxaTkscRob6nGe)
-
-
-[](https://star-history.dera.page/#ChunelFeng/CGraph&Date)
-
-------------
-
-Appendix 1. Version Information
-
-[2021.05.04 - v1.0.0 - Chunel]
-* Provide graph execution and support parallel computation of independent nodes
-
-[2021.05.09 - v1.1.0 - Chunel]
-* Optimize concurrency during graph execution
-
-[2021.05.18 - v1.1.1 - Chunel]
-* Add node `name` and `session` information
-
-[2021.05.23 - v1.2.0 - Chunel]
-* Provide single-node loop execution
-
-[2021.05.29 - v1.3.0 - Chunel]
-* Provide `cluster` and `region` division and loop execution
-* Provide `tutorial` content with multiple usage examples
-
-[2021.06.14 - v1.4.0 - Chunel]
-* Provide the `param` passing mechanism
-* Provide the `group` feature, with multi-node modules uniformly inheriting from the `group` module
-* Add support for Linux
-
-[2021.06.20 - v1.4.1 - Chunel]
-* Provide the `condition` feature
-* Add support for Windows
-
-[2021.06.24 - v1.5.0 - Chunel]
-* Provide the `pipeline` factory creation method
-* Update `tutorial` content
-
-[2021.07.07 - v1.5.1 - Chunel]
-* Optimize the thread pool and implement task stealing
-
-[2021.07.11 - v1.5.2 - Chunel]
-* Optimize the thread pool and implement automatic thread-count adjustment
-
-[2021.07.31 - v1.5.3 - Chunel]
-* Optimize the thread pool, implement batch task retrieval, and optimize task stealing
-
-[2021.08.29 - v1.6.0 - Chunel]
-* Provide multi-`pipeline` support and optimize underlying logic
-* Update `tutorial` content
-
-[2021.09.19 - v1.6.1 - Chunel]
-* Provide the `Lru` operator, `Trie` operator, and template node, and optimize underlying logic
-* Update `tutorial` content
-
-[2021.09.29 - v1.7.0 - Chunel]
-* Provide the `aspect` feature for horizontally extending `node` or `group` capabilities
-* Update `tutorial` content
-
-[2021.10.07 - v1.7.1 - Chunel]
-* Optimize `aspect` implementation logic, provide aspect parameters, and support batch aspect addition
-* Update `tutorial` content
-
-[2021.11.01 - v1.8.0 - Chunel]
-* Provide the `adapter` feature and the `singleton` adapter feature
-* Optimize `pipeline` execution logic
-* Update `tutorial` content
-
-[2021.12.18 - v1.8.1 - Chunel]
-* Optimize return-value `CStatus` information
-
-[2022.01.02 - v1.8.2 - Chunel]
-* Provide automatic exit on node execution timeout and the `task group` feature
-* Provide thread pool configuration parameter setters
-
-[2022.01.23 - v1.8.3 - Chunel]
-* Provide the `function` adapter to implement functional programming
-* Provide thread-priority scheduling and CPU-binding execution
-* Update `tutorial` content
-
-[2022.01.31 - v1.8.4 - Chunel]
-* Provide asynchronous execution for `node`
-
-[2022.02.03 - v1.8.5 - Chunel]
-* Provide the `daemon` feature for periodically executing tasks outside the graph flow
-* Update `tutorial` content
-
-[2022.04.03 - v1.8.6 - Chunel]
-* Provide the `DistanceCalculator` operator for computing arbitrary data types and arbitrary distance types
-* Update `tutorial` content
-
-[2022.04.05 - v2.0.0 - Chunel]
-* Provide the `domain` feature and the `Ann` domain abstraction model, beginning support for specific professional domains
-* Provide the hold execution mechanism
-* Update `tutorial` content
-
-[2022.05.01 - v2.0.1 - Chunel]
-* Optimize the `pipeline` registration mechanism and support custom sequential execution of the init method
-* Provide a one-click build script
-
-[2022.05.29 - v2.1.0 - Chunel]
-* Provide an `element` parameter writing method
-* Provide support for C++14
-* Update `tutorial` content
-
-[2022.10.03 - v2.1.1 - Chunel]
-* Provide a task-priority mechanism in the thread pool
-* Optimize `group` execution logic
-
-[2022.11.03 - v2.2.0 - Chunel]
-* Provide the `message` feature, mainly for data transfer between different `pipeline`s
-* Update `tutorial` content
-
-[2022.12.24 - v2.2.1 - Chunel]
-* Provide the `TemplateNode` feature to optimize parameter passing
-* Update `tutorial` content
-
-[2022.12.25 - v2.2.2 - [yeshenyong](https://github.com/yeshenyong)]
-* Optimize graph execution logic
-
-[2022.12.30 - v2.2.3 - Chunel]
-* Provide `message` publish-subscribe support
-* Provide execution engine switching
-
-[2023.01.21 - v2.3.0 - Chunel]
-* Provide the `event` feature
-* Provide the `CGraph Intro.xmind` file to introduce the overall CGraph logic through a mind map
-
-[2023.01.25 - v2.3.1 - Chunel]
-* Provide support for C++11. Thanks to [MirrorYuChen](https://github.com/MirrorYuChen) for the related solution
-
-[2023.02.10 - v2.3.2 - Chunel]
-* Optimize the scheduling strategy and provide a scheduling parameter configuration interface
-* Provide the English version of readme.md
-
-[2023.02.12 - v2.3.3 - [yeshenyong](https://github.com/yeshenyong), Chunel]
-* Provide graphviz visualization for graph display
-* Provide parameter chain tracing
-
-[2023.02.22 - v2.3.4 - Chunel]
-* Optimize the scheduling mechanism on Windows
-* Optimize the `param` mechanism and the `event` mechanism
-
-[2023.03.25 - v2.4.0 - [woodx](https://github.com/woodx9), Chunel]
-* Provide a runnable Docker environment and the Dockerfile for building it
-* Provide the `pipeline` scheduling resource control mechanism
-* Optimize scheduling performance
-
-[2023.05.05 - v2.4.1 - Chunel]
-* Provide thread-binding execution
-* Provide a method to get the maximum parallelism of a `pipeline`. Thanks to [Hanano-Yuuki](https://github.com/Hanano-Yuuki) for the related solution
-* Provide asynchronous `pipeline` execution and exit during execution
-
-[2023.06.17 - v2.4.2 - Chunel]
-* Provide the `MultiCondition` feature
-* Provide pause and resume execution for `pipeline`
-
-[2023.07.12 - v2.4.3 - Chunel]
-* Optimize `CStatus` and add exception location information
-
-[2023.09.05 - v2.5.0 - Chunel]
-* Provide the perf feature for `pipeline` performance analysis
-* Provide the timeout mechanism for `element`
-* Provide the `some` feature to optimize asynchronous execution of `pipeline`
-
-[2023.09.15 - v2.5.1 - Chunel]
-* Provide the `fence` feature
-* Provide the `coordinator` feature
-
-[2023.11.06 - v2.5.2 - Chunel]
-* Optimize the `message` feature, allow configuring how to handle blocked writes, and reduce memory copy count
-* Add `example` content with simple implementations for different industries
-* Optimize scheduling performance
-
-[2023.11.15 - v2.5.3 - Chunel]
-* Provide `proto` definition files
-* Add the `mutable` feature and provide dependency registration syntax sugar
-
-[2024.01.05 - v2.5.4 - Chunel]
-* Provide `test` content, including performance and functional test cases
-* Optimize the `event` mechanism and support asynchronous waiting
-
-[2024.07.18 - v2.6.0 - [PaPaPig-Melody](https://github.com/PaPaPig-Melody), Chunel]
-* Provide topological execution for `pipeline`
-* Provide a method to determine whether dependencies exist between `element`s
-* Provide Bazel build support
-* Optimize the perf feature
-
-[2024.09.17 - v2.6.1 - Chunel]
-* Provide static execution for `pipeline` and a micro-task mechanism based on static execution
-* Provide `pipeline` pruning to remove duplicate dependencies between `element`s
-* Provide a method for `element` to remove dependencies
-* Optimize the `event` mechanism so asynchronous events can wait for completion
-* Release the [CGraph-lite](https://github.com/ChunelFeng/CGraph-lite) project, providing simple DAG construction and parameter passing. Its APIs are fully compatible and can be seamlessly switched to this project
-
-[2024.11.16 - v2.6.2 - Chunel]
-* Optimize parameter mutex mechanism and retrieval performance
-* Fix abnormal waiting in auxiliary threads
-* Update `tutorial` content
-
-[2025.03.16 - v3.0.0 - Chunel]
-* Provide the Python version
-* Provide the `stage` feature for synchronized running between `element`s
-* Update `tutorial` content
-
-[2025.05.04 - v3.1.0 - Chunel]
-* Provide the full-featured Python version
-* Provide Python and C++ hybrid programming
-* Provide Python packaging and support installation with `pip3 install PyCGraph`
-
-[2025.06.15 - v3.1.1 - Chunel]
-* Provide C# and Java versions
-* Provide the `CODE_OF_CONDUCT.md` document
-
-[2025.09.06 - v3.1.2 - Chunel]
-* Provide the Go version
-* Optimize the `message` feature
-* Optimize the `aspect` feature
-
-[2025.11.08 - v3.2.2 - Chunel]
-* Provide local save and load features
-* Rename `PyCGraph` to `pycgraph` and support installation with `pip3 install pycgraph`
-
-[2026.03.24 - v3.2.3 - Chunel]
-* Optimize the `message` feature
-* Optimize stability
-
-[2026.05.10 - v3.2.4 - Chunel]
-* Optimize the `pycgraph` feature
-
-
-
-------------
-
-Appendix 2. Thanks
-
-* Thanks to the [Doocs WeChat official account](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzIxNjA5ODQ0OQ==&action=getalbum&album_id=1989460124624551937&scene=173&from_msgid=2654703194&from_itemidx=1&count=3&nolastread=1#wechat_redirect) for publishing the related introduction document. Welcome to join the [Doocs open-source community](https://github.com/doocs)
-* Thanks to the introduction and recommendation from HelloGithub magazine: [HelloGithub Issue 70](https://github.com/521xueweihan/HelloGitHub/blob/master/content/HelloGitHub70.md)
-
-
-
-* Thanks to the recommendation from [awesome-cpp](https://github.com/fffaraz/awesome-cpp), we all know, it is the most authoritative recommendation list for cpp project in the world
-* Thanks to the recommendation from `Taskflow Group`: [awesome-parallel-computing](https://github.com/taskflow/awesome-parallel-computing), and we always treat [taskflow](https://github.com/taskflow/taskflow) as a role model
-* Thanks to the recommendation from [awesome-workflow-engines](https://github.com/meirwah/awesome-workflow-engines)
-* Thanks to all developers in [CONTRIBUTORS](https://github.com/ChunelFeng/CGraph/blob/main/CONTRIBUTORS.md) for their contributions to the project
-* Thanks to all friends who have provided suggestions and advice for the `CGraph` project. They are not listed one by one here. Everyone is always welcome to join and build together
-
-
-
-------------
-
-Appendix 3. Contact
-
-* WeChat: ChunelFeng (You are welcome to scan the QR code above and add the author as a friend. Please briefly note your personal information ^_^)
-* Email: chunel@foxmail.com
-* Source Code: https://github.com/ChunelFeng/CGraph
-* Forum: www.chunel.cn
-
-
diff --git a/python/setup.py b/python/setup.py
index 854725fd..4ac42c06 100644
--- a/python/setup.py
+++ b/python/setup.py
@@ -12,7 +12,7 @@
import pybind11
__PYCGRAPH_NAME__ = "pycgraph"
-__PYCGRAPH_VERSION__ = "3.2.4"
+__PYCGRAPH_VERSION__ = "3.2.5"
__PYCGRAPH_AUTHOR__ = "Chunel"
__PYCGRAPH_AUTHOR_EMAIL__ = "chunel@foxmail.com"
__PYCGRAPH_DESCRIPTION__ = "CGraph with python api wrapper by pybind11"
diff --git a/src/UtilsCtrl/ThreadPool/UThreadPool.cpp b/src/UtilsCtrl/ThreadPool/UThreadPool.cpp
index c062170e..8b14b486 100644
--- a/src/UtilsCtrl/ThreadPool/UThreadPool.cpp
+++ b/src/UtilsCtrl/ThreadPool/UThreadPool.cpp
@@ -295,17 +295,22 @@ CVoid UThreadPool::monitor() {
CSize UThreadPool::wakeupAllThread() {
CSize size = 0;
- CGRAPH_LOCK_GUARD lock(wakeup_mutex_);
- for (auto* pt : primary_threads_) {
- if (pt->wakeup()) {
- ++size;
+ if (wakeup_mutex_.try_lock()) {
+ for (auto* pt : primary_threads_) {
+ if (pt->wakeup()) {
+ ++size;
+ }
}
+ wakeup_mutex_.unlock();
}
- for (const auto& st : secondary_threads_) {
- if (st->wakeup()) {
- ++size;
+ if (!secondary_threads_.empty() && st_mutex_.try_lock()) {
+ for (const auto& st : secondary_threads_) {
+ if (st->wakeup()) {
+ ++size;
+ }
}
+ st_mutex_.unlock();
}
return size;
diff --git a/xmake.lua b/xmake.lua
index 0a77aebd..6e8cd6aa 100644
--- a/xmake.lua
+++ b/xmake.lua
@@ -2,7 +2,7 @@
set_project("CGraph")
-- set project version
-set_version("3.2.4")
+set_version("3.2.5")
-- set language: c++11
set_languages("c++11")