《C++ Concurrency in Action》读书笔记三 同步并发操作
发布日期:2021-05-07 23:34:52 浏览次数:25 分类:精选文章

本文共 2532 字,大约阅读时间需要 8 分钟。

????????????futures

??????????????????????????????????????????????????????????C++???????Condition Variables??futures???????????????????????

1. ?????????

????????????????????????????????????????????????????????????????????????

???????

?????????C++???std::this_thread::sleep_for()?????????????????????????????????????????????????????????????????

???????

???????????????????????????std::mutex???????????????????????C++???????????

  • std::condition_variable
  • std::condition_variable_any

??????std::mutex?????????????std::mutex???????

2. ??futures???????

std::future?std::shared_future?C++???????????????

futures?????

std::future????????????????????????std::shared_future????std::future?????????????????????????

???????

C++???std::async()????????????std::async()????std::thread??????????????????std::function???

?????std::packaged_task

std::packaged_task???????????????????std::future????????????std::function??????????????????????

3. ??????????

???????????????????????????futures???????????????????

???????

??????????????futures????????????????????????????

template
std::list
parallel_quick_sort(std::list
input) { if (input.empty()) return input; t pivot = input.front(); auto divide_point = std::partition(input.begin(), input.end(), [&pivot](t const& t) { return t < pivot; }); std::future
> new_lower = std::async(parallel_quick_sort, input.begin(), input.end(), divide_point); std::future
> new_higher = std::async(parallel_quick_sort, input.begin(), input.end()); return std::move(new_lower.get()) + new_higher.get();}

???????

????futures?????????????????????????????

template
std::future
> spawn_task(func f, a&& a) { typedef std::result_of
::type result_type; std::packaged_task
::type(a&&)> task(f); std::future
res = task.get_future(); std::thread t(std::move(task), std::move(a)); t.detach(); return res;}

4. ??????

?????????????????????????C++???std::chrono?????????????

??????

  • std::chrono::time_point??????????
  • std::chrono::steady_clock????????????????????

??

std::condition_variable cv;std::mutex m;bool done = false;auto timeout = std::chrono::steady_clock::now() + std::chrono::milliseconds(500);std::unique_lock
lk(m);while (!done) { auto result = cv.wait_until(lk, timeout); if (result == std::cv_status::timeout) { break; }}

??

?????????futures????????????????????????????????????????????????????????

上一篇:《C++ Concurrency in Action》读书笔记四 c++内存模型和原子类型
下一篇:《C++ Concurrency in Action》读书笔记二 线程之间共享资源

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年05月10日 01时00分14秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

2024年非科班的人合适转行做程序员吗? 2023-01-24
2024数字安全创新性案例报告,从零基础到精通,收藏这篇就够了! 2023-01-24
2024最新最全CTF入门指南(非常详细)零基础入门到精通,收藏这一篇就够了 2023-01-24
2024最新科普什么是大模型?零基础入门到精通,收藏这篇就够了 2023-01-24
2024最新程序员接活儿搞钱平台盘点 2023-01-24
2024最火专业解读:信息安全(非常详细)零基础入门到精通,收藏这一篇就够了 2023-01-24
2024版最新SRC漏洞挖掘思路手法(非常详细),零基础入门到精通,收藏这一篇就够了 2023-01-24
2024版最新渗透测试零基础入门教程,带你入门到精通(超详细),收藏这篇就够了 2023-01-24
2024版最新网络安全入门必备读书清单(非常详细)零基础入门到精通,收藏这一篇就够了 2023-01-24
2024版最新网络安全教程从入门到精通,看完这一篇就够了 2023-01-24
2024网络安全岗就业前景如何?零基础入门到精通,收藏这篇就够了 2023-01-24
2024零基础如何入门网络安全? 2023-01-24
2024,java开发,已经炸了吗? 2023-01-24
2025入门黑客技术必读书籍(非常全面)带你从小白进阶大佬!收藏这一篇就够了 2023-01-24
2025入门黑客技术必读书籍(非常全面)带你从小白进阶大佬!收藏这篇就够了 2023-01-24
2025大语言模型入门该怎么学?零基础入门到精通,收藏这篇就够了 2023-01-24
2025年3月全国计算等级考试(报名操作指南)从零基础到精通,收藏这篇就够了! 2023-01-24
2025年中国云计算市场四大趋势前瞻,从零基础到精通,收藏这篇就够了! 2023-01-24
2025年十大最佳漏洞管理工具,从零基础到精通,收藏这篇就够了! 2023-01-24
2025想做黑客?先来学习 SQL 注入,零基础入门到精通,收藏这篇就够了 2023-01-25