Concurrency
文章平均质量分 52
Roadmap and Realization of C++ Concurrency
余额抵扣
助学金抵扣
还需支付
¥99.90
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
GarryLau
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Concurrency\MultiThreading
Updating…… 1.每个线程都必须具有一个初始函数(initial function)。例如:#include <iostream>#include &amp原创 2018-06-18 23:03:19 · 325 阅读 · 0 评论 -
条件变量
// condition_variable::notify_all#include <iostream> // std::cout#include <thread> // std::thread#include <mutex> // std::mutex, std::unique_lock#include <condition_variable> // std::condition_原创 2021-03-17 16:18:55 · 151 阅读 · 0 评论 -
泛型函数std::lock()、std::try_lock()和std::call_once()
std::lock()、std::try_lock()、std::call_once()的用法原创 2021-03-03 00:31:12 · 820 阅读 · 1 评论 -
std::unique_lock()的调用方式
1. 像std::lock_guard那样使用接受一个互斥体引用的构造函数,这个构造函数尝试获得互斥体的锁,并且阻塞直到获得锁。#include <iostream> // std::cout#include <thread> // std::thread#include <mutex> // std::mutex, std::lock_guard, std::adopt_lockstd::mutex mtx;原创 2021-03-02 20:43:17 · 535 阅读 · 0 评论 -
std::lock_guard()的两种调用方式
// lock_guard example#include <iostream> // std::cout#include <thread> // std::thread#include <mutex> // std::mutex, std::lock_guardstd::mutex mtx;void print_thread_id(int idx) { std::lock_guard<std::m原创 2021-03-02 08:02:52 · 468 阅读 · 0 评论 -
定时互斥体类
标准库提供了一个std::timed_mutex类和一个std::recursive_timed_mutex类,这两个类都是支持普通lock()、try_lock()和unlock()方法的定时互斥体类,此外还支持以下两个方法:try_lock_for调用线程将尝试在一个给定的相对时间内试图获得这个锁。如果不能在给定超时之后获得这个锁,这个调用失败并返回false。如果在超时时间之内获得了这个锁,这个调用成功并返回true。#include <iostream>#include <原创 2021-02-26 12:23:37 · 129 阅读 · 0 评论 -
std::recursive_mutex使用示例
std::recursive_mutex的行为几乎和std::mutex一致,区别在于已经获得了一个递归互斥体所有权的线程允许在同一个互斥体上再次调用loci()和try_lock()。调用线程调用unlock()方法的次数应该等于获得这个递归互斥体锁的次数。#include <iostream>#include <string>#include <mutex>#include <thread>std::recursive_mutex mu; /原创 2021-02-25 23:27:33 · 1990 阅读 · 0 评论 -
线程本地存储
#include <iostream>#include <thread>#include <vector>void func() { thread_local int a = 0; int b = 0; a++; b++; std::cout << std::this_thread::get_id() << " a = " << a << " b = " << ..原创 2021-02-22 23:41:06 · 169 阅读 · 1 评论 -
C++11中如何创建线程?
通过函数指针创建线程// 通过函数指针创建线程#include <iostream>#include <thread>void counter(int id, int num_iterations){ for (int i = 0; i < num_iterations; ++i) { std::cout << "counter " << id << " has value ";原创 2021-02-22 08:01:42 · 186 阅读 · 0 评论 -
原子类型示例
#include <iostream>#include <atomic>#include <thread>#include <vector>void promote(std::atomic_int &a, int &b){ for (int i = 0; i < 1000000; ++i) { ++a; ++b; }}int main(){ std::ve原创 2021-02-22 06:58:07 · 279 阅读 · 0 评论 -
超额订阅oversubscription
如果实际线程数大于硬件支持的线程数,则出现超额订阅oversubscription,上下文切换将意味着更多的线程会降低性能。#include <thread>#include <functional>#include <numeric>#include <algorithm> // std::for_each#include <vector>#include <iostream>template<typena原创 2020-06-29 23:08:27 · 971 阅读 · 0 评论 -
批量创建线程
生成一批线程并等待它们完成#include <thread>#include <functional>#include <algorithm>#include <vector>#include <iostream>void Print(int i) { std::cout << i << std::endl;}int main(){ std::vector<std::thread&原创 2020-06-27 23:28:24 · 302 阅读 · 0 评论 -
转移线程的所有权
std::thread和std::unique_ptr,std::fstream、std::ifstream、std::ofstream等流一样只可转移move所有权,不可复制copy。#include <thread>#include <utility> // std::move#include <iostream>void Foo() { std::cout << "foo" << std::endl;}int mai原创 2020-06-27 00:54:38 · 241 阅读 · 0 评论 -
线程入口函数
任何callable target – functions, lambda expressions, bind expressions, or other function objects, as well as pointers to member functions and pointers to data members都可以作为线程的入口函数。#include <thread>#include <iostream>#include <functional>原创 2020-06-27 00:06:52 · 824 阅读 · 0 评论 -
传递参数给线程函数
创建线程时函数参数默认直接拷贝?不一定按照参考文献[1]的说法,传递参数给线程函数的时候参数会以默认的方式被复制到内部存储空间。实际上,在Microsoft Visual Studio Professional 2017实验环境下其表现并非如此,如下程序是可以正常运行的。也许参考文献[1]采用的是旧标准,而最新的编译器已经更“智能”了。#include <string>#include <thread>#include <iostream>void foo(c原创 2020-06-26 22:54:23 · 263 阅读 · 0 评论 -
Thread Guard
#include <thread>#include <iostream>class Stomach{public: void Dislike() { std::cout << "I can't stomach his speeches." << std::endl; }};class ThreadGuard{public: ThreadGuard(std::thread &t) : t_(t)原创 2020-06-26 16:46:51 · 601 阅读 · 0 评论
分享