
C++
bo_2018
这个作者很懒,什么都没留下…
展开
-
pthread和std::thread对比
std::thread是C++11接口,pthread是C++98接口且只支持Linux。 示例: pthread_create(&thread, &attr, f, static_cast<void *>(&args)); // 其中f是函数,args是所有参数打包成的结构体。因为pthread_create的第四个参数类型是void*,所以需要强制转型...转载 2019-12-17 13:12:28 · 6585 阅读 · 0 评论 -
C++11介绍
国际标准化组织于2011年9月1号出版发布ISO/IEC 14882:2011,称为C++11。相比较C++98而言,C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率。 1.统一的初始化 什么叫做统一的初始化呢?例如:我们以前在往vector中插入数据的时候,只能一个元素一个元素调用push_back进行插入,现在我们可以...转载 2019-05-05 15:54:13 · 1772 阅读 · 0 评论 -
C++11中多线程
std::lock_guard std::lock_guard是RAII模板类的简单实现,功能简单。 std::lock_guard 在构造函数中进行加锁,析构函数中进行解锁。 锁在多线程编程中,使用较多,因此c++11提供了lock_guard模板类;在实际编程中,我们也可以根据自己的场景编写resource_guardRAII类,避免忘掉释放资源。 std::unique_lock ...原创 2019-05-17 15:43:52 · 284 阅读 · 0 评论 -
C++11的std::async
c++11中增加了线程,使得我们可以非常方便的创建线程,它的基本用法是这样的: void f(int n); std::thread t(f, n + 1); t.join(); 但是线程毕竟是属于比较低层次的东西,有时候使用有些不便,比如我希望获取线程函数的返回结果的时候,我就不能直接通过thread.join()得到结果,这时就必须定义一个变量,在线程函数中去给这个变量赋值,然后jo...转载 2019-05-17 16:09:18 · 194 阅读 · 0 评论 -
STL sort实现
函数声明 #include <algorithm> template< class RandomIt > void sort( RandomIt first, RandomIt last ); template< class RandomIt, class Compare > void sort( RandomIt first, RandomIt l...转载 2019-05-31 13:35:51 · 352 阅读 · 0 评论 -
Linux中信号量介绍及使用
1.初始化条件变量pthread_cond_init #include <pthread.h> int pthread_cond_init(pthread_cond_t *cv, const pthread_condattr_t *cattr); 返回值:函数成功返回0;任何其他返回值都表示错误 初始化一个条件变量。当参数cattr为空指针时,函数创建的是一个缺省的条件变量。否...转载 2019-07-16 11:07:26 · 2969 阅读 · 0 评论 -
Reactor介绍
在处理web请求时,通常有两种体系结构,分别为:thread-based architecture(基于线程)、event-driven architecture(事件驱动) thread-basedarchitecture 基于线程的体系结构通常会使用多线程来处理客户端的请求,每当接收到一个请求,便开启一个独立的线程来处理。这种方式虽然是直观的,但是仅适用于并发访问量不大的场景,因为线程需...转载 2019-08-12 15:29:38 · 566 阅读 · 0 评论 -
线程池处理
(1)简单线程池的实现,如何保证线程池是线程安全的? 首先给大家普及下线程池的知识。我写的线程池是使用POSIX写的。线程池整个项目中包括两个类:一个是Task类,用于描述执行一个任务的方法(一个函数)和执行这个任务所需要的参数(函数的参数)。另外一个类就是我们的线程池类ThreadPool类,在线程池中主要有两个队列,一个是Task类队列,用于存放要处理的任务。一个是线程池中存放线程的数组。下...转载 2019-09-11 19:10:59 · 115 阅读 · 0 评论