加载中
spin lock自旋锁

自旋锁 通过cas操作,在大部分情况下可以实现比std::mutex 更高的性能 基本思想是通过原子操作去尝试获取变量的值 所有线程去竞争 该原子变量 性能: 无竞争情况下 1.spin_lock 16000W 次每秒...

09/29 15:15
81
boost 对称协程symmetric_coroutine

对称协程 symmetric_coroutine 非对称协程 asymmetric_coroutine #include "boost_1_60_0/boost/coroutine/coroutine.hpp" int main() { using Coroutine_t = boost::coroutines::sym...

2017/01/19 01:09
132
并发,std::future和std::async

当一个操作可以一步执行的时候,可以用std::async创建异步任务,异步任务的返回值就是任务函数的返回值,需要的时候再通过std::future (期望)的 get来获取,注意 get内部是std::move int ...

2016/09/23 17:16
61
double check

double check模式 依然会导致潜在的资源的条件竞争 C++多线程模型 ,这种处理方法在大部分情况下能按照意图工作 通常做法 Test*getInstance() { if (ins == nullptr) { m.lock(); ...

2016/09/22 10:36
2
C++ 11

std::terminate();   set_terminate ,产生异常会调用该函数,默认是调用abort void handler() { cout << "error ~~~~~~~~~~~~~~~~~~"; } std::set_terminate(handler);//默认调用abo...

2016/09/20 12:24
2
简单的UDP多线程模型

和Lite2D项目中的网络线程和主线程 交互方式 差不多 在这里,队列是线程安全的, #include <iostream> #include <list> #include <string> #include <algorithm> #include <vector> #inclu...

2016/08/24 19:33
20
线程死锁一引起的系列思考

发生死锁必须具备以下的4个条件 1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资...

2016/04/07 11:11
69
并发,std::atomic 和 std::mutex 区别

原子操作和互斥锁 原子操作的原子性 仅限于 类提供的方法,比如int特化版本的 operator++ 就是安全的 mutex有个好处就是可以和条件变量(condition_variable)一起搭配使用, mutex保证的是一系...

2015/11/18 22:27
169
并发,std::condition_variable_any

等待特定条件的唤醒,条件变量通常和互斥锁 搭配使用。mutex 一般对资源是抢占式的,如果想等待某个线程先执行 ,然后再执行 可用条件变量 等待变量代码情况还必须使用 mutex。 对的调用的线...

2015/11/18 21:15
124
并发,std::mutex

互斥锁 任意时刻只有一个线程能访问互斥资源,一个程序中可以拥有多把锁,但是每一把锁 只有一个线程有访问权限,锁可以看做是一个多线程访问的资源 . std::mutex _mutex;//全局锁  int...

2015/11/18 20:48
34
并发,std::thread

std::thread 定义一个线程对象,并管理关联的线程 备注: 你可以使用 thread 对象来观察和管理在应用程序中的执行线程。 使用默认的构造函数创建的线程对象不与任何可执行线程关联。 通过使用...

2015/11/18 20:35
96
并发,std::atomic

std::atomic 提供了原子操作。 有2个转有特化版本。 1...针对整形atomic<integral> 专适用于所有整数类型。 这些提供主要通过模板不可用的附加操作。 如operator++等 其中integral包括char ...

2015/11/18 19:53
55
std::bind和std::function

std::bind 用于绑定一个函数,返回另外一种调用方式的函数对象 ,可以改变参数顺序 和个数 std::function 用于构建一个函数特别是 回调函数 ,用于替代 函数指针/*常和匿名函数一起用回调*/ ...

2015/10/04 16:15
303
std::nothrow

new 如果内存分配失败,则会抛出异常 ,然后可以用try 来处理异常, 如果不想这样,可以用 std::nothrow auto ref=new(std::nothrow) myclass; 这样分配失败就不会抛出异常,直接对 ref判...

2015/10/04 14:56
131
右值引用&& 和 语意转移 std::move

左值与右值的定义 C++( 包括 C) 中所有的表达式和变量要么是左值,要么是右值。通俗的左值的定义就是非临时对象,那些可以在多条语句中使用的对象。 所有的变量都满足这个定义,在多条代码中...

2015/06/06 22:44
389

没有更多内容

加载失败,请刷新页面

返回顶部
顶部