workspace
workspaceShi Ji Yu C++11De Qing Liang Ji Yi Bu Zhi Xing Kuang Jia ,Zhi Chi :Tong Yong Ren Wu Yi Bu Zhi Xing , You Xian Ji Ren Wu Diao Du , Zi Gua Ying Dong Tai Xian Cheng Chi , Gao Xiao Jing Tai Xian Cheng Chi , Yi Chang Chu Li Ji Zhi Deng .
Mu Lu
- workspace
- Mu Lu
- Te Dian
- Zhu Yao Mo Kuai
- workbranch
- supervisor
- workspace
- Fu Zhu Mo Kuai
- futures
- benchmark
- Kong Pao Ce Shi
- Yan Chi Ce Shi
- Ru He Shi Yong
- Sheng Cheng doxygenWen Dang
- Jian Dan Shi Yong
- Yun Xing Yi You Shi Li (Yi exampleWei Li )
- An Zhuang Dao Xi Tong (Zhi Chi Win/Linux/Mac)
- Zhu Yi Shi Xiang
- Lei Qu
- Jie Kou An Quan Xing
- Shi Jian Dan Wei
- Qi Ta
- Can Kao Shu Mu
- Lian Xi Wo
Te Dian
- Qing Liang De :Header-Only, Jie Kou Jian Dan .
- Gao Xiao De :Chao Qing Liang Ji Ren Wu Zhi Chi Yi Bu Shun Xu Zhi Xing ,Ti Gao Liao Kuang Jia De Bing Fa Xing Neng .
- Ling Huo De :Zhi Chi Duo Chong Ren Wu Lei Xing , Dong Tai Xian Cheng Diao Zheng , Ke Tong Guo workspaceGou Jian Bu Tong De Chi Mo Xing .
- Wen Ding De :Feng Zhuang function_Shi Xian Xiao Ren Wu You Hua Jian Shao Dong Tai Nei Cun Shen Qing , Yong You Liang Hao De Yi Bu Xian Cheng Yi Chang Chu Li Ji Zhi .
- Jian Rong Xing :Chun C++11Shi Xian ,Kua Ping Tai ,Qie Jian Rong C++11Yi Shang Ban Ben .
Zhu Yao Mo Kuai
workbranch
workbranch(Gong Zuo Fen Zhi )Shi Dong Tai Xian Cheng Chi De Chou Xiang ,Nei Zhi Liao Yi Tiao Xian Cheng An Quan De Ren Wu Dui Lie Yong Yu Tong Bu Ren Wu . Qi Guan Li De Mei Yi Tiao Yi Bu Gong Zuo Xian Cheng Bei Cheng Wei worker,Fu Ze Cong Ren Wu Dui Lie Bu Duan Huo Qu Ren Wu Bing Zhi Xing . (Yi Xia Shi Li An Shun Xu Zhi Yu workspace/example/)
Rang Wo Men Xian Jian Dan Di Ti Jiao Yi Dian Ren Wu ,Dang Ni De Ren Wu Dai You Fan Hui Zhi Shi ,workbranchHui Fan Hui Yi Ge std::future,Fou Ze Fan Hui void.
int main() {
// 2 threads
wsp::workbranch br(2);
// return void
br.submit([]{ std::cout<<"hello world"<
auto result = br.submit([]{ return 2023; });
std::cout<<"Got "<
br.wait_tasks(1000);
}
You Yu Fan Hui Yi Ge std::futureHui Dai Lai Yi Ding De Kai Xiao ,Ru Guo Ni Bu Xu Yao Fan Hui Zhi Bing Qie Xi Wang Cheng Xu Pao De Geng Kuai ,Na Yao Ni De Ren Wu Ying Gai Shi void()Lei Xing De .
Dang Ni You Yi Ge Ren Wu Bing Qie Ni Xi Wang Ta Neng Jin Kuai Bei Zhi Xing Shi ,Ni Ke Yi Zhi Ding Gai Ren Wu De Lei Xing Wei urgent,Ru Xia :
int main() {
// 1 threads
wsp::workbranch br;
br.submit
br.submit
br.wait_tasks(); // wait for tasks done (timeout: no limit)
}
Zai Zhe Li Wo Men Tong Guo Zhi Ding Ren Wu Lei Xing Wei wsp::task::urg,Lai Ti Gao Ren Wu De You Xian Ji . Zui Zhong
Zai Wo De Ji Qi Shang :
task A done
task B done
Zai Zhe Li Wo Men Bu Neng Bao Zheng task AYi Ding Hui Bei Xian Zhi Xing ,Yin Wei Dang Wo Men Ti Jiao task ADe Shi Hou ,task BKe Neng Yi Jing Zai Zhi Xing Zhong Liao . urgentBiao Qian Ke Yi Rang Ren Wu Bei Cha Ru Dao Dui Lie Tou Bu ,Dan Wu Fa Gai Bian Yi Jing Zai Zhi Xing De Ren Wu .
Jia Ru Ni You Ji Ge Qing Liang Yi Bu Ren Wu ,Zhi Xing Ta Men Zhi Xu Yao Fei Chang Duan Zan De Shi Jian . Tong Shi ,An Zhao Shun Xu Zhi Xing Ta Men Dui Ni Lai Shuo Mei You Ying Xiang ,Shen Zhi Zheng Zhong Ni Xia Huai . Na Yao Ni Ke Yi Ba Ren Wu Lei Xing Zhi Ding Wei sequence,Yi Bian Ti Jiao Yi Ge Ren Wu Xu Lie . Zhe Ge Ren Wu Xu Lie Hui Bei Dan Ge Xian Cheng Shun Xu Zhi Xing :
int main() {
wsp::workbranch br;
// sequence tasks
br.submit
[]{std::cout<<"task 2 done\n";},
[]{std::cout<<"task 3 done\n";},
[]{std::cout<<"task 4 done\n";});
// wait for tasks done (timeout: no limit)
br.wait_tasks();
}
Ren Wu Xu Lie Hui Bei Da Bao Cheng Yi Ge Jiao Da De Ren Wu ,Yi Ci Lai Jian Qing Kuang Jia Tong Bu Ren Wu De Fu Dan ,Ti Gao Zheng Ti De Bing Fa Xing Neng .
Dang Ren Wu Zhong Pao Chu Liao Yi Ge Yi Chang ,workbranchYou Liang Chong Chu Li Fang Shi :A-Jiang Qi Bu Huo Bing Shu Chu Dao Zhong Duan B-Jiang Qi Bu Huo Bing Tong Guo std::futureChuan Di Dao Zhu Xian Cheng . Di Er Chong Xu Yao Ni Ti Jiao Yi Ge Dai Fan Hui Zhi De Ren Wu .
// self-defined
class excep: public std::exception {
const char* err;
public:
excep(const char* err): err(err) {}
const char* what() const noexcept override {
return err;
}
};
int main() {
wsp::workbranch wbr;
wbr.submit([]{ throw std::logic_error("A logic error"); }); // log error
wbr.submit([]{ throw std::runtime_error("A runtime error"); }); // log error
wbr.submit([]{ throw excep("XXXX");}); // log error
auto future1 = wbr.submit([]{ throw std::bad_alloc(); return 1; }); // catch error
auto future2 = wbr.submit([]{ throw excep("YYYY"); return 2; }); // catch error
try {
future1.get();
} catch (std::exception& e) {
std::cerr<<"Caught error: "<
try {
future2.get();
} catch (std::exception& e) {
std::cerr<<"Caught error: "<
}
Zai Wo De Ji Qi Shang :
jack@xxx:~/workspace/test/build$ ./test_exception
workspace: worker[140509071521536] caught exception:
what(): A logic error
workspace: worker[140509071521536] caught exception:
what(): A runtime error
workspace: worker[140509071521536] caught exception:
what(): XXXX
Caught error: std::bad_alloc
Caught error: YYYY
Ci Wai ,workbranchZai Gong Zuo Xian Cheng Kong Xian Shi Ke Yi She Zhi San Chong Bu Tong De Deng Dai Ce Lue :
lowlatancy, // Busy-wait with std::this_thread::yield(), minimal latency.
balance, // Busy-wait initially, then sleep briefly after max_spin_count.
blocking // Block thread using condition variables until a task is available or conditions are met.
};
- LowLatency Mo Shi
- Shi Xian Fang Shi :
Zai Ren Wu Dui Lie Wei Kong Shi ,Gong Zuo Xian Cheng Diao Yong
std::this_thread::yield()Zhu Dong Rang Chu CPU Kong Zhi Quan ,Dan Li Ji Zhong Xin Jian Cha Ren Wu Dui Lie (Mang Deng Dai ). - Xiang Ying Yan Chi : Xian Cheng Chi Xu Zhan Yong CPU Zi Yuan ,Bu Duan Jian Cha Ren Wu Dui Lie Shi Fou You Xin Ren Wu . Yi Dan You Xin Ren Wu Dao Da ,Xian Cheng Neng Gou Xun Su Xiang Ying ,Shi De Xiang Ying Yan Chi Jiao Di .
- CPU Zhan Yong : Gao ,Yin Wei Xian Cheng Shi Zhong Zai Xun Huan Zhong Yun Xing ,Wei Jin Xing Xiu Mian .
- Shi Xian Fang Shi :
Zai Ren Wu Dui Lie Wei Kong Shi ,Gong Zuo Xian Cheng Diao Yong
- Balance Mo Shi
- Shi Xian Fang Shi :
Xian Cheng Zai Chu Shi De
max_spin_countCi Xun Huan Nei ,Cai Yongstd::this_thread::yield()Mang Deng Dai . Ru Guo Chao Guomax_spin_count,Xian Cheng Shou Xian Hui Duan Zan Xiu Mian ,Ran Hou Zhong Xin Kai Shi Jian Cha Ren Wu Dui Lie . - Xiang Ying Yan Chi : Xian Cheng Ke Neng Hui Jin Ru Xiu Mian ,Dao Zhi Xiang Ying Yan Chi Zeng Jia .
- CPU Zhan Yong : Zhong Deng ,Yin Wei Zai Chu Qi Shi Yong Mang Deng Dai Xiao Hao Jiao Duo CPU Zi Yuan ,Dan Zhi Hou Tong Guo Xiu Mian Jiang Di CPU Zhan Yong .
- Shi Xian Fang Shi :
Xian Cheng Zai Chu Shi De
- Blocking Mo Shi
- Shi Xian Fang Shi :
Dang Ren Wu Dui Lie Wei Kong Shi ,Xian Cheng Bu Hui Zhu Dong Jian Cha Ren Wu Dui Lie ,Er Shi Tong Guo Tiao Jian Bian Liang Jin Ru Zu Sai Zhuang Tai . Xian Cheng Hui Yi Zhi Zu Sai ,Zhi Dao Man Zu Yi Xia Ren Yi Tiao Jian :
- Ren Wu Dui Lie Zhong You Xin Ren Wu Dao Da (
num_tasks() > 0). - Xi Tong Chu Yu Deng Dai Zhuang Tai (
is_waiting). - Xi Tong Zheng Zai Xiao Hui (
destructing).
- Ren Wu Dui Lie Zhong You Xin Ren Wu Dao Da (
- Xiang Ying Yan Chi :
Xiang Ying Yan Chi Jiao Gao ,Yin Wei Xian Cheng Zai Zu Sai Zhuang Tai Xia Wu Fa Li Ji Xiang Ying Xin Ren Wu . Bi Xu Yi Lai Wai Bu Tong Zhi (Ru
notify_one()Huonotify_all())Lai Huan Xing Xian Cheng . - CPU Zhan Yong : Di ,Yin Wei Xian Cheng Wan Quan Zu Sai ,Bu Zhan Yong Ren He CPU Zi Yuan ,Zhi Dao Bei Huan Xing .
- Shi Xian Fang Shi :
Dang Ren Wu Dui Lie Wei Kong Shi ,Xian Cheng Bu Hui Zhu Dong Jian Cha Ren Wu Dui Lie ,Er Shi Tong Guo Tiao Jian Bian Liang Jin Ru Zu Sai Zhuang Tai . Xian Cheng Hui Yi Zhi Zu Sai ,Zhi Dao Man Zu Yi Xia Ren Yi Tiao Jian :
supervisor
supervisorShi Yi Bu Guan Li Zhe Xian Cheng De Chou Xiang ,Fu Ze Jian Kong workbranchDe Fu Zai Qing Kuang Bing Jin Xing Dong Tai Diao Zheng . Ta Yun Xu Ni Zai Mei Yi Ci Diao Kong workbranchZhi Hou Zhi Xing Yi Ge Xiao Ren Wu ,Ni Ke Yi Yong Lai Xie Ri Zhi Huo Zhe Zuo Yi Xie Qi Ta Diao Kong Deng .
Mei Yi Ge supervisorKe Yi Guan Li Duo Ge workbranch. Ci Shi workbranchZhi Jian Gong Xiang supervisorDe Suo You She Ding .
int main() {
wsp::workbranch br1(2);
wsp::workbranch br2(2);
// 2 <= thread number <= 4
// time interval: 1000 ms
wsp::supervisor sp(2, 4, 1000);
sp.set_tick_cb([&br1, &br2]{
auto now = std::chrono::system_clock::now();
std::time_t timestamp = std::chrono::system_clock::to_time_t(now);
std::tm local_time = *std::localtime(×tamp);
static char buffer[40];
std::strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", &local_time);
std::cout<<"["<
std::cout<<"["<
});
sp.supervise(br1); // start supervising
sp.supervise(br2); // start supervising
for (int i = 0; i < 1000; ++i) {
br1.submit([]{std::this_thread::sleep_for(std::chrono::milliseconds(10));});
br2.submit([]{std::this_thread::sleep_for(std::chrono::milliseconds(20));});
}
br1.wait_tasks();
br2.wait_tasks();
}
Zai Wo De Ji Qi Shang ,Shu Chu Ru Xia :
jack@xxx:~/workspace/example/build$ ./e4
[2023-06-13 12:24:31] br1: [workers] 4 | [blocking-tasks] 606
[2023-06-13 12:24:31] br2: [workers] 4 | [blocking-tasks] 800
[2023-06-13 12:24:32] br1: [workers] 4 | [blocking-tasks] 213
[2023-06-13 12:24:32] br2: [workers] 4 | [blocking-tasks] 600
[2023-06-13 12:24:33] br1: [workers] 4 | [blocking-tasks] 0
[2023-06-13 12:24:33] br2: [workers] 4 | [blocking-tasks] 404
[2023-06-13 12:24:34] br1: [workers] 3 | [blocking-tasks] 0
[2023-06-13 12:24:34] br2: [workers] 4 | [blocking-tasks] 204
[2023-06-13 12:24:35] br1: [workers] 2 | [blocking-tasks] 0
[2023-06-13 12:24:35] br2: [workers] 4 | [blocking-tasks] 4
[2023-06-13 12:24:35] br1: [workers] 2 | [blocking-tasks] 0
[2023-06-13 12:24:35] br2: [workers] 4 | [blocking-tasks] 0
workspace
workspaceShi Yi Ge Tuo Guan Qi /Ren Wu Fen Fa Qi ,Ni Ke Yi Jiang workbranchHe supervisorTuo Guan Gei Ta ,Bing Yong workspaceFen Pei De Zu Jian Zhuan Shu IDLai Fang Wen Ta Men . Jiang Zu Jian Tuo Guan Zhi workspaceZhi Shao You Yi Xia Ji Dian Hao Chu :
- Dui Nei Cun Zheng Que Shi Fang :workspaceZai Nei Bu Yong uniqueZhi Zhen Lai Guan Li Zu Jian ,Que Bao Mei You Nei Cun Xie Lou
- Fen Zhi Jian Ren Wu Fu Zai Jun Heng :workspaceZhi Chi Ren Wu Fen Fa ,Zai workbranchZhi Jian Shi Xian Liao Jian Dan Gao Xiao De Fu Zai Jun Heng .
- Bi Mian Kong Xuan Zhi Zhen Wen Ti :Dang workbranchXian Yu supervisorXi Gou Hui Zao Cheng Kong Xuan Zhi Zhen De Wen Ti ,Shi Yong workspaceKe Yi Bi Mian Zhe Chong Qing Kuang
- Geng Di De Kuang Jia Kai Xiao :workspaceDe Ren Wu Fen Fa Ji Zhi Neng Jian Shao Yu Gong Zuo Xian Cheng De Jing Zheng ,Ti Gao Xing Neng (Jian Xia Benchmark).
Wo Men Ke Yi Tong Guo workspaceZi Dai De Ren Wu Fen Fa Ji Zhi Lai Yi Bu Zhi Xing Ren Wu (Diao Yong submit).
int main() {
wsp::workspace spc;
auto bid1 = spc.attach(new wsp::workbranch);
auto bid2 = spc.attach(new wsp::workbranch);
auto sid1 = spc.attach(new wsp::supervisor(2, 4));
auto sid2 = spc.attach(new wsp::supervisor(2, 4));
spc[sid1].supervise(spc[bid1]); // start supervising
spc[sid2].supervise(spc[bid2]); // start supervising
// Automatic assignment
spc.submit([]{std::cout<<std::this_thread::get_id()<<" executed task"<
spc.for_each([](wsp::workbranch& each){each.wait_tasks();});
}
Dang Wo Men Xu Yao Deng Dai Ren Wu Zhi Xing Wan Bi De Shi Hou ,Wo Men Ke Yi Diao Yong for_each+wait_tasks,Bing Wei Mei Yi Ge workbranchZhi Ding Deng Dai Shi Jian ,Dan Wei Shi Hao Miao .
(Geng Duo Xiang Xi Jie Kou Jian workspace/test/)
Fu Zhu Mo Kuai
futures
wsp::futuresShi Yi Ge std::futureShou Ji Qi (collector),Ke Yi Huan Cun Tong Lei Xing De std::future,Bing Jin Xing Pi Liang Cao Zuo . Yi Ge Jian Dan De Cao Zuo Ru Xia :
int main() {
wsp::futures<int> futures;
wsp::workspace spc;
spc.attach(new wsp::workbranch("br", 2));
futures.add_back(spc.submit([]{return 1;}));
futures.add_back(spc.submit([]{return 2;}));
futures.wait();
auto res = futures.get();
for (auto& each: res) {
std::cout<<"got "<
}
Zhe Li futures.get()Fan Hui De Shi Yi Ge std::vector,Li Mian Bao Cun Liao Suo You Ren Wu De Fan Hui Zhi .
benchmark
Kong Pao Ce Shi
Ce Shi Yuan Li :Tong Guo Kuai Su Ti Jiao Da Liang De Kong Ren Wu Yi Kao Cha Kuang Jia Tong Bu Ren Wu De Kai Xiao .
Ce Shi Huan Jing :Ubuntu20.04 : 8He 16Xian Cheng : AMD Ryzen 7 5800H with Radeon Graphics 3.20 GHz
<Ce Shi 1>
Zai Ce Shi 1Zhong Wo Men Diao Yong Liao submit,Mei Ci Da Bao 10Ge Kong Ren Wu Bing Ti Jiao Dao workbranchZhong Zhi Xing . Jie Guo Ru Xia :(Dai Ma Jian workspace/benchmark/bench1.cc)
threads: 1 | tasks: 100000000 | time-cost: 2.68801 (s)
threads: 2 | tasks: 100000000 | time-cost: 3.53964 (s)
threads: 3 | tasks: 100000000 | time-cost: 3.99903 (s)
threads: 4 | tasks: 100000000 | time-cost: 5.26045 (s)
threads: 5 | tasks: 100000000 | time-cost: 6.65157 (s)
threads: 6 | tasks: 100000000 | time-cost: 8.40907 (s)
threads: 7 | tasks: 100000000 | time-cost: 10.5967 (s)
threads: 8 | tasks: 100000000 | time-cost: 13.2523 (s)
<Ce Shi 2>
Zai Ce Shi 2Zhong Wo Men Tong Yang Jiang 10Ge Ren Wu Da Cheng Yi Bao ,Dan Shi Shi Jiang Ren Wu Ti Jiao Dao workspaceZhong ,Li Yong workspaceJin Xing Ren Wu Fen Fa ,Qie Zai workspaceTuo Guan De workbranchZhi Yong You 1Tiao Xian Cheng . Jie Guo Ru Xia :(Dai Ma Jian workspace/benchmark/bench2.cc)
threads: 1 | tasks: 100000000 | time-cost: 4.38221 (s)
threads: 2 | tasks: 100000000 | time-cost: 4.01103 (s)
threads: 3 | tasks: 100000000 | time-cost: 3.6797 (s)
threads: 4 | tasks: 100000000 | time-cost: 3.39314 (s)
threads: 5 | tasks: 100000000 | time-cost: 3.03324 (s)
threads: 6 | tasks: 100000000 | time-cost: 3.16079 (s)
threads: 7 | tasks: 100000000 | time-cost: 3.04612 (s)
threads: 8 | tasks: 100000000 | time-cost: 3.11893 (s)
<Ce Shi 3>
Zai Ce Shi 3Zhong Wo Men Tong Yang Jiang 10Ge Ren Wu Da Cheng Yi Bao ,Bing Qie Jiang Ren Wu Ti Jiao Dao workspaceZhong ,Dan Shi workspaceGuan Li De Mei Ge workbranchZhong Du Yong You 2Tiao Xian Cheng . Jie Guo Ru Xia :(Dai Ma Jian workspace/benchmark/bench3.cc)
threads: 2 | tasks: 100000000 | time-cost: 4.53911 (s)
threads: 4 | tasks: 100000000 | time-cost: 7.0178 (s)
threads: 6 | tasks: 100000000 | time-cost: 6.00101 (s)
threads: 8 | tasks: 100000000 | time-cost: 5.97501 (s)
threads: 10 | tasks: 100000000 | time-cost: 5.63834 (s)
threads: 12 | tasks: 100000000 | time-cost: 5.17316 (s)
Zong Jie :Li Yong workspaceJin Xing Ren Wu Fen Fa ,Qie workbranchXian Cheng Shu Wei 1De Qing Kuang Xia ,Zheng Ge Ren Wu Tong Bu Kuang Jia Shi Jing Tai De ,Ren Wu Tong Bu Kai Xiao Zui Xiao . Dang workbranchNei De Xian Cheng Shu Yue Duo ,Mian Dui Da Liang Kong Ren Wu Shi Dui Ren Wu Dui Lie De Jing Zheng Yue Ji Lie ,Kuang Jia Kai Xiao Yue Da . (Geng Jia Xiang Jin De Ce Shi Jie Guo Jian bench.md,Ce Shi Dai Ma Yu workspace/bench)
Yan Chi Ce Shi
Ce Shi Yuan Li :Tong Guo Ji Lu Zai Bu Tong Deng Dai Ce Lue Xia Kong Ren Wu Zhi Xing Shi Jian Mo Ni Ce Shi Yan Chi .
Ce Shi Huan Jing :Ubuntu24.04(WSL2) : 8He 16Xian Cheng : AMD Ryzen 7 7840HS w/ Radeon 780M Graphics
<Ce Shi 4>
Zai Ce Shi 4Zhong Wo Men Tong Yang Jiang 10Ge Ren Wu Da Cheng Yi Bao ,Bing Ti Jiao Dao workspaceZhong ,Li Yong workspaceJin Xing Ren Wu Fen Fa ,Qie Zai workspaceTuo Guan De workbranchZhi Yong You 1Tiao Xian Cheng ,Wo Men Dui San Chong Bu Tong De Deng Dai Ce Lue (lowlatancy, balance He blocking)Fen Bie Jin Xing Liao Ce Shi ,Bing Ji Lu Liao Mei Chong Ce Lue Xia De Zong Hao Shi (time_cost). Jie Guo Ru Xia :(Dai Ma Jian workspace/benchmark/bench4.cc)
Strategy: lowlatancy | Threads: 2 | Tasks: 10000000 | Time-cost: 0.337076 (s)
Strategy: balance | Threads: 2 | Tasks: 10000000 | Time-cost: 0.33139 (s)
Strategy: blocking | Threads: 2 | Tasks: 10000000 | Time-cost: 0.457265 (s)
---------------------------------------------------------------------------------------
Strategy: lowlatancy | Threads: 3 | Tasks: 10000000 | Time-cost: 0.328127 (s)
Strategy: balance | Threads: 3 | Tasks: 10000000 | Time-cost: 0.327678 (s)
Strategy: blocking | Threads: 3 | Tasks: 10000000 | Time-cost: 3.442142 (s)
---------------------------------------------------------------------------------------
Strategy: lowlatancy | Threads: 4 | Tasks: 10000000 | Time-cost: 0.309493 (s)
Strategy: balance | Threads: 4 | Tasks: 10000000 | Time-cost: 0.302125 (s)
Strategy: blocking | Threads: 4 | Tasks: 10000000 | Time-cost: 6.375414 (s)
---------------------------------------------------------------------------------------
Strategy: lowlatancy | Threads: 8 | Tasks: 10000000 | Time-cost: 0.289247 (s)
Strategy: balance | Threads: 8 | Tasks: 10000000 | Time-cost: 0.263492 (s)
Strategy: blocking | Threads: 8 | Tasks: 10000000 | Time-cost: 6.631623 (s)
---------------------------------------------------------------------------------------
Strategy: lowlatancy | Threads: 16 | Tasks: 10000000 | Time-cost: 0.246766 (s)
Strategy: balance | Threads: 16 | Tasks: 10000000 | Time-cost: 0.238113 (s)
Strategy: blocking | Threads: 16 | Tasks: 10000000 | Time-cost: 6.722631 (s)
Zong Jie :
You Yu Zhu Xian Cheng Yi Zhi Zai Ti Jiao Ren Wu ,balanceCe Lue Shui Mian Shi Jian Jiao Duan ,Dao Zhi He lowlatancyCe Lue De Yan Chi Da Zhi Xiang Si .
Er Zai blocking Ce Lue Xia ,Sui Zhao Xian Cheng Shu De Zeng Jia ,Yi Xia Yin Su Dao Zhi Liao Ren Wu Zhi Xing Shi Jian De Zeng Jia :
- Tiao Jian Bian Liang De Zu Sai He Huan Xing Kai Xiao .
- Ren Wu Dui Lie De Jing Zheng He Suo Zheng Yong .
- Xian Cheng Shu Chao Guo CPU He Xin Shu Dao Zhi De Diao Du Kai Xiao .
- Bei Dong Deng Dai Ren Wu Fen Fa De Xiao Lu Di Xia .
- Xian Cheng Shang Xia Wen Qie Huan De Pin Lu Zeng Jia .
- Tiao Jian Bian Liang Yan Bo Dao Zhi De Wu Xiao Huan Xing .
| Ce Lue | Shi Xian Fang Shi | Xiang Ying Yan Chi | CPU Zhan Yong |
|---|---|---|---|
| LowLatency | Shi Yong std::this_thread::yield() Jin Xing Mang Deng Dai |
Zui Di | Gao |
| Balanced | Chu Shi Mang Deng Dai Hou Jin Ru Duan Shi Jian Xiu Mian | Zhong Deng | Zhong Deng |
| Blocking (Passive) | Shi Yong Tiao Jian Bian Liang Zu Sai Xian Cheng ,Zhi Dao Ren Wu Dui Lie You Xin Ren Wu Huo Qi Ta Tiao Jian Man Zu | Jiao Gao | Di |
Ru He Shi Yong
Sheng Cheng doxygenWen Dang
Qing Ti Qian An Zhuang doxygen
doxygen ./doxygen.conf
Sheng Cheng De Wen Dang Zai workspace/docs/Zhong ,Ke Yi Zai Liu Lan Qi Zhong Da Kai workspace/docs/html/index.htmlBing Cha Kan Jie Kou .
Jian Dan Shi Yong
g++ -I workspace/include xxx.cc -lpthread && ./a.out
Qi Ta Ping Tai Ke Neng Xu Yao Lian Jie Bu Tong De Xian Cheng Ku ,Qie Ke Zhi Xing Wen Jian Hou Zhui Bu Tong .
Yun Xing Yi You Shi Li (Yi exampleWei Li )
cmake -B build
cd build
make
./e1
An Zhuang Dao Xi Tong (Zhi Chi Win/Linux/Mac)
cmake -B build
cd build
sudo make install
Zhu Yi Shi Xiang
Lei Qu
- Bu Yao Zai Ren Wu Zhong Cao Zong Zu Jian ,Ru :
submit([&br]{br.wait_tasks();});Hui Zu Sai Xian Cheng - Bu Yao Zai Hui Diao Zhong Cao Zong Zu Jian ,Ru :
set_tick_cb([&sp]{sp.suspend();}); - Bu Yao Rang workbranchXian Yu supervisorXi Gou (Kong Xuan Zhi Zhen Wen Ti ).
Jie Kou An Quan Xing
| Zu Jian Jie Kou | Shi Fou Xian Cheng An Quan |
|---|---|
| workspace | Fou |
| workbranch | Shi |
| supervisor | Shi |
| futures | Fou |
Shi Jian Dan Wei
workspaceYou Guan Shi Jian De Jie Kou Dan Wei Du Shi -> Hao Miao (ms)
Qi Ta
Can Kao Shu Mu
<
Lian Xi Wo
You Xiang : 1848395727@qq.com