
C++多线程
在?升龙拳!
这个作者很懒,什么都没留下…
展开
-
Cpp-Concurrency-in-Action 随书官方源码
https://github.com/bsmr-c-cpp/Cpp-Concurrency-in-Action原创 2021-02-20 20:31:26 · 211 阅读 · 0 评论 -
C++11多线程基础:使用std::atomic_flag实现自旋锁
#include <atomic>#include <iostream>#include <thread>class spinlock_mutex{ std::atomic_flag flag;public: spinlock_mutex(): flag(ATOMIC_FLAG_INIT) {} void lock() { while(flag.test_and_set(std:.原创 2021-02-08 15:29:54 · 386 阅读 · 0 评论 -
C++多线程基础: 并发条件变量std::condition_variable
#include <iostream> // std::cout#include <thread> // std::thread#include <mutex> // std::mutex, std::unique_lock#include <condition_variable> // std::condition_variablestd::mutex .原创 2021-01-28 21:08:36 · 139 阅读 · 0 评论 -
C++多线程基础:用std::promise在线程中接收需要的值
#include <vector>#include <thread>#include <future>#include <numeric>#include <iostream>#include <chrono>void accumulate(std::vector<int>::iterator first, std::vector<int>::iterator la.原创 2021-01-28 14:34:33 · 185 阅读 · 0 评论 -
C++多线程:使用packaged_task异步执行任务
#include <iostream> // std::cout#include <future> // std::packaged_task, std::future#include <chrono> // std::chrono::seconds#include <thread> // std::thread, std::this_thread::sleep_for// count down tak..原创 2021-01-27 23:57:39 · 122 阅读 · 0 评论 -
C++多线程基础:std::async异步任务与返回
#include <future>#include <chrono>#include <iostream>int get_the_answer() { int ret = rand(); std::this_thread::sleep_for(std::chrono::milliseconds(10000)); return ret;}void do_other_stuff() { std::this_thread::slee.原创 2021-01-26 10:27:09 · 414 阅读 · 0 评论 -
C++多线程基础:线程休眠
#include <thread>#include <mutex>#include <chrono>#include <iostream>bool flag;std::mutex m;void wait_for_flag(){ std::unique_lock<std::mutex> lk(m); while(!flag) { lk.unlock(); // 1 解锁互斥量 .原创 2021-01-18 10:29:40 · 2305 阅读 · 0 评论 -
C++11多线程学习: 线程函数内static变量的条件竞争
#include <thread>#include <vector>using namespace std;class my_class {public: my_class() {}; ~my_class() {}; string info;};my_class& get_my_class_instance(){ // C++11之前:产生条件竞争 一个线程正在初始化变量,在未完成前其他线程也开始初始化 // C+.原创 2021-01-13 23:25:14 · 964 阅读 · 0 评论 -
C++11多线程学习:首次初始化应用
#include <chrono> // std::chrono::milliseconds#include <iostream> // std::cout#include <mutex> // std::call_once, std::once_flag#include <thread> // std::thread, std::this_thread::sleep_forusing namespace std;int winner;std.原创 2021-01-13 11:02:49 · 320 阅读 · 0 评论 -
C++11多线程学习:共享资源锁
#include <thread> // thread#include <list> // list#include <mutex> // mutex#include <algorithm> // find#include <stdio.h> // printfusing namespace std;list<int> some_list;mutex some_mutex;void a.原创 2021-01-13 23:05:06 · 509 阅读 · 1 评论 -
C++11多线程学习:识别线程id
#include <Windows.h>#include <iostream>#include <thread>std::thread::id master_thread_id;void do_master_thread_work() { std::cout << __FUNCTION__ << ": " << std::this_thread::get_id() << "\n";}void do.原创 2021-01-13 23:20:38 · 510 阅读 · 0 评论 -
C++11多线程学习:批量管理线程
#include <iostream>#include <thread>void do_work(int i) { std::cout << i << "\n";};int main() { std::vector<std::thread> threads; for (unsigned i = 0; i < 20; ++i) { threads.push_back(std::thr.原创 2021-01-13 23:20:49 · 266 阅读 · 0 评论 -
C++11多线程学习:线程绑定函数所有权转移
#include <iostream>#include <thread>void function1() { std::cout << __FUNCTION__ << "\n";}void function2() { std::cout << __FUNCTION__ << "\n";}int main() { // t1与function1绑定 std::thread t1(func.原创 2021-01-13 23:21:12 · 492 阅读 · 0 评论 -
C++11多线程学习: 线程传参
void do_something(std::string s){ std::cout << s;}int main(){ char buffer[1000] = "123456"; std::thread t(do_something, std::string(buffer)); // 先转为string类型 避免悬垂指针 t.detach(); return 0;}原创 2021-01-13 11:36:22 · 374 阅读 · 0 评论 -
C++11多线程学习: 利用RAII正确释放
风险代码#include <iostream>#include <thread>void do_something(unsigned int i){ printf("%d\n", i);}struct func{ int& i; func(int& i_) : i(i_) {} void operator() () { for (unsigned j = 0; j<10; ++j)..原创 2021-01-10 01:18:27 · 627 阅读 · 0 评论 -
C++11多线程学习: 线程创建
#include <iostream>#include <thread>void do_something() { std::cout << __FUNCTION__ << std::endl;}void do_something_else() { std::cout << __FUNCTION__ << std::endl;}class background_task{public: v.原创 2021-01-09 23:49:08 · 98 阅读 · 0 评论