C++11新特性之智能指针
动态内存与智能指针
动态内存
在C++中,动态内存的管理是通过一对运算符来完成的:
new, 在动态内存中为对象分配空间并返回一个指向该对象的指针,也可以选择对对象进行初始化
delete, 接受一个动态对象的指针,销毁该对象,并释放与之关联的内存
智能指针
为了更容易,也更安全的使用动态内存,新的标准库提供了两种智能指针类型来管理动态对象。智能指针的行为类似于常规指针,区别在于它负责自动释放所指向的对象。
含义
shared_ptr 允许多个指针指向同一个对象
unique_ptr 只能”独占”所指向的对象
初始化
智能指针也是一个模板。所以,创建智能指针时,必须提供指针类型,与vector一样,在尖括号内给出类型。
shared...
C++11新特性之互斥锁包装器
lock_guard管理类
#include <mutex>
template< class Mutex >
class lock_guard;
类 lock_guard 是互斥体包装器,为在作用域块期间占有互斥提供便利 RAII 风格机制。
创建 lock_guard 对象时,它试图接收给定互斥的所有权。控制离开创建 lock_guard 对象的作用域时,销毁 lock_guard 并释放互斥。
lock_guard 类不可复制。
模板形参
Mutex - 要锁定的互斥。
成员类型
成员类型
定义
mutex_type
Mutex
...
C++11新特性之thread线程
概述
#include <thread>
class std::thread;
std::thread 是C++11 新增的线程支持库的线程类,类 thread 表示单个执行线程。线程允许多个函数同时执行。
线程在构造关联的线程对象时立即开始执行(等待任何OS调度延迟),从提供给作为构造函数参数的顶层函数开始。顶层函数的返回值将被忽略,而且若它以抛异常终止,则调用 std::terminate 。顶层函数可以通过 std::promise 或通过修改共享变量(可能需要同步,见 std::mutex 与 std::atomic )将其返回值或异常传递给调用方。
成员类型
成员类型 : native_handle_type
成员类
class thread::i...
C++11新特性之recursive_mutex互斥锁
概述
#include <mutex>
class std::recursive_mutex;
recursive_mutex 类是同步原语,能用于保护共享数据免受从个多线程同时访问。
recursive_mutex 提供排他性递归所有权语义:
调用方线程在从它成功调用 lock 或 try_lock 开始的时期里占有 recursive_mutex 。此时期间,线程可以进行对 lock 或 try_lock 的附加调用。所有权的时期在线程调用 unlock 匹配次数时结束。
线程占有 recursive_mutex 时,若其他所有线程试图要求 recursive_mutex 的所有权,则它们将阻塞(对于调用 lock )或收到 false 返回值(对于...
C++11新特性之mutex互斥锁
概述
#include <mutex>
class std::mutex;
mutex 提供排他性非递归所有权语义:
调用方线程从它成功调用 lock 或 try_lock 开始,到它调用 unlock 为止占有 mutex 。
线程占有 mutex 时,所有其他线程若试图要求 mutex 的所有权,则将阻塞(对于 lock 的调用)或收到 false 返回值(对于 try_lock ).
调用方线程在调用 lock 或 try_lock 前必须不占有 mutex 。
若 mutex 在仍为任何线程所占有时即被销毁,或在占有 mutex 时线程终止,则行为未定义。
std::mutex 既不可复制亦不可移动。
成员类型
成员类型 : nativ...
C++11新特性之condition_variable条件变量
概述
#include <condition_variable>
class std::condition_variable;
std::condition_variable是C++11才新增的线程支持库中的类,定义于头文件<condition_variable>。类似于POSIX线程中pthread_cond_t变量和pthread_cond_*()系列函数的功能。
condition_variable类是同步原语,能用于阻塞一个线程,或同时阻塞多个线程,直至另一线程修改共享变量(条件)并通知condition_variable。
阻塞在前,通知在后。condition_variable类和互斥锁std::mutex、std::unique_lock&...
代码格式化工具astyle的安装和使用
简介
AStyle,即 Artistic Style,是一个可用于 C, C++, C++/CLI, Objective‑C, C# 和Java编程语言格式化和美化的工具。
下载
1、Astyle官网下载地址:https://sourceforge.net/projects/astyle
2、Astyle官方文档地址:http://astyle.sourceforge.net/astyle.html
3、Astyle风格设置:参考《Google 开源项目 c/c++风格》
安装
windows
windows下有二进制文件,直接下载,解压后,把二进制程序加入环境变量即可。
linux
Linux下需要自己下载源码,编译安装。
解压到指定目录
在...
共计 90 篇文章,5 页。