
C++11多线程
文章平均质量分 84
C++11的多线程
执假以为真
Learning, Coding, Writing
展开
-
C++11中的原子类型
C++11 的 template <class T> struct atomic;是一个模板结构体,用来将普通类型转换成原子类型。原子对象的主要特征是,从不同的线程访问此包含的值不会引起数据竞争(即,这样做是定义良好的行为,并且访问已正确排序)。此外,原子对象具有通过指定不同的内存顺序(memory order)来同步访问其线程中其他非原子对象的能力。使用原子对象就不再需要锁了,从而使得性能大大提高。那么性能到底提高了多少呢?笔者写了个程序验证了一下。程序如下:// g++ 1.cpp原创 2021-03-12 20:51:03 · 1518 阅读 · 0 评论 -
C++11多线程的局限
前面有多篇原创博客或译文介绍了C++11多线程的种种用法,但是在实际使用中,笔者却发现了C++11多线程的一些较严重的局限。目前看到的,主要有下面2个: 不支持类似于pthread_cancel()的功能 不支持类似于pthread_exit()这样的让当前线程立即退出的功能 因此,C++11的多线程一旦运行起来,很难有简单的方法来让单个指定的线程结束。这样就会有一些问题,...原创 2019-05-11 00:18:01 · 716 阅读 · 0 评论 -
用C++11的多线程读文件
曾经写了一篇博客做一些大数据的处理,但是其中在读取一个大文件的时候,并没有采取并行处理的方式。那么,一个大文件,为了能够批量处理,现在由多个线程来同时读它,各自读取一块(所读内容互不相同)。这么做会有问题吗?答:如果只有读线程,那么没有问题。因为,不同的线程可以创建自己的文件描述符表项,再分别指向不同的文件表项,而每个文件表项里面可以有不同的当前文件偏移量,所以没有问题。而且这种情况也根本不需要...原创 2019-03-03 23:27:54 · 13218 阅读 · 2 评论 -
C++11多线程之packaged_task
翻译了cppreference上的packaged_task翻译 2016-07-31 18:24:23 · 1886 阅读 · 0 评论 -
C++11多线程之promise
翻译了cppreference上关于promise的一些内容。翻译 2016-07-10 22:45:33 · 2778 阅读 · 0 评论 -
C++11多线程之std::unique_lock
翻译了cppreference上关于unique_lock 的一些文章。原创 2020-03-18 21:54:23 · 13458 阅读 · 4 评论 -
C++11多线程之lock类型
翻译了cppreference上的关于lock类型的文章。翻译 2016-07-03 11:57:10 · 1970 阅读 · 0 评论 -
C++11多线程之yield
翻译:http://en.cppreference.com/w/cpp/thread/yield翻译 2016-06-10 21:10:41 · 6399 阅读 · 0 评论 -
C++11多线程之条件变量
原文: http://en.cppreference.com/w/cpp/thread/condition_variablestd::condition_variable定义在头文件<condition_variable>class condition_variable; (since C++11)condition_variable类是一个同步原语,可以被用来阻...翻译 2016-06-04 22:12:07 · 11408 阅读 · 4 评论 -
C++11多线程之std::thread
翻译:http://en.cppreference.com/w/cpp/thread/thread翻译 2016-05-29 21:14:36 · 1048 阅读 · 0 评论 -
C++11中的线程支持库(Thread support library)
翻译了一篇英文文档。原文:http://en.cppreference.com/w/cpp/threadThread support library翻译 2016-05-23 23:33:05 · 1685 阅读 · 0 评论 -
C++11多线程之std::lock
翻译了cppreference上的std::lock一文。翻译 2016-03-14 22:26:11 · 3572 阅读 · 2 评论 -
C++11多线程之std::lock_guard
翻译了cppreference上的std::lock_guard一文。翻译 2016-03-14 22:22:51 · 23077 阅读 · 1 评论 -
C++11多线程之std::mutex
翻译了cppreference上的std::mutex翻译 2016-03-14 22:18:59 · 2321 阅读 · 0 评论 -
一段简单而又费解的关于std::async和时间的代码
这是一段使用std::async的简单而又费解的代码。说其简单,是因为并不难读懂,就只有十几行;而说其费解,是因为在不同环境下的表现不同。对了,其实这不是一段代码,而是两段。看程序如下:#include <future>#include <iostream>#include <ctime>void test_time_1() { st...原创 2016-01-30 23:11:20 · 2719 阅读 · 0 评论 -
用C++11的std::async代替线程的创建
c++11中增加了线程,使得我们可以非常方便的创建线程,它的基本用法是这样的: void f(int n);std::thread t(f, n + 1);t.join(); 但是线程毕竟是属于比较低层次的东西,有时候使用有些不便,比如希望获取线程函数的返回结果的时候,就不能直接通过thread.join()得到结果。在POSIX线程函数中,这时候就必须定义一个变量...转载 2016-01-29 22:24:40 · 3621 阅读 · 2 评论