博客专栏  >  编程语言   >  C++并发实战(C++11)

C++并发实战(C++11)

以C++11为标准,解析多线程编程

关注
228 已关注
25篇博文
  • C++并发实战:面试题6:线程一次性同步

    是否熟悉POSIX多线程编程技术?如熟悉,编写程序完成如下功能: 1)有一int型全局变量g_Flag初始值为0; 2) 在主线称中起动线程1,打印“this is thread1”,并将g_Fl...

    2014-03-27 16:44
    4491
  • C++并发实战:面试题5:读者写者问题copy on write

    读者写者问题 这也是一个非常经典的多线程题目,题目大意如下:有一个写者很多读者,多个读者可以同时读文件,但写者在写文件时不允许有读者在读文件,同样有读者读时写者也不能写。 这里...

    2014-03-27 14:51
    3433
  • C++并发实战:面试题4:生产者消费者试题blocking queue

    生产者消费者问题 这是一个非常经典的多线程题目,题目大意如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个有多个缓冲区的缓冲池,...

    2014-03-27 13:19
    3843
  • C++并发实战:面试题3:一道google笔试题

    题目:有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD。初始都为空。现要让四个文件呈如下格式: A:1 2 3 4 1 2....

    2014-03-25 22:27
    3338
  • C++并发实战:面试题2:一道迅雷笔试题

    题目:编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。 采用C++11实现: ...

    2014-03-25 14:35
    3345
  • C++并发实战:面试题1:一道多线程笔试题

    题目:子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码。 #include #include #i...

    2014-03-24 18:17
    4623
  • C++并发实战19:lock free编程

    涉及到并行/并发计算时,通常都会想到加锁,加锁可以保护共享的数据,不过也会存在一些问题: 1. 由于临界区无法并发运行,进入临界区就需要等待,加锁使得效率的降低。多核CPU也不能发挥全部马力 2. 在...

    2013-12-26 12:50
    3228
  • C++并发实战18: 线程安全的查找表和链表

    经常遇见根据关键字查找内容的应用如DNS查询,标准库的std::map系列可供选择,但是它们是非线程安全的,一个线程安全的查找表实现如下,其主要是通过hash函数将各个key分散到具体的bucket中...

    2013-12-25 14:22
    3459
  • C++并发实战17:线程安全的stack和queue

    1 线程安全的数据结构有几个可以注意的地方:当一个线程看见invariants时其他线程不会破坏该invariants,比如一个线程在遍历访问vector另一个线程却在修改vector这就破坏了var...

    2013-12-24 16:59
    3723
  • C++并发实战16: std::atomic原子操作

    针对原子类型操作要不一步完成,要么不做,防止由于多线程串行化带来的错误。 1  std::atomic_flag是一个bool原子类型,其支持test_and_set和clear两个操作,atomic...

    2013-12-19 15:50
    19213
  • C++并发实战15:函数式编程

    函数y=f(x)就是个x->y的映射,其仅仅是x和y的关系,其运算关系仅仅是依赖参数x并不涉及其它外部状态。在函数式编程中,每个语句是一个表达式都是执行单纯的计算并有返回值,而C中的语句是执行某种操作...

    2013-12-18 15:33
    2831
  • C++并发实战14:时间

    std::chrono::system_clock::now()//返回系统当前时间      时钟周期:std::ratio //表示1s内25个周期      std::chrono::sys...

    2013-12-17 14:42
    2944
  • C++并发实战13:std::future、std::async、std::promise、std::packaged_task

    std::condition_variable可以用于异步事件的重复通知,但是有些时候可能只等待事件发生一次,比如:等待特定的航班,用条件变量大杀器有点浪费了。C++11标准库提供了几种异步任务机制。...

    2013-12-16 20:05
    10128
  • C++并发实战12:线程安全的queue

    1 首先看下STL中的queue的接口: template > class queue { public: explicit queue(const Container&); e...

    2013-12-13 15:16
    7923
  • C++并发实战11:条件变量

    1  线程睡眠函数 std::this_thread::sleep_for(std::chrono::milliseconds(100));//头文件#include,供选择的如seconds()等 ...

    2013-12-13 12:45
    3508
  • C++并发实战10:保护共享数据的可选机制

    使用mutex的时候要尽量缩小临界区,若可能的话,对mutex加锁仅仅是为了获取共享数据,而对数据的计算放在临界区之外。a lock should be held for only the minim...

    2013-12-12 11:39
    2431
  • C++并发实战9:unique_lock

    1 回顾采用RAII手法管理mutex的std::lock_guard其功能是在对象构造时将mutex加锁,析构时对mutex解锁,这样一个栈对象保证了在异常情形下mutex可以在lock_guard...

    2013-12-11 16:36
    11522
  • C++并发实战8:deadlock

    1 死锁:每个线程都希望锁住一些列锁以执行某个操作,且每个线程持有一个不同的锁,最终每个线程都需要其它线程的锁,导致所有线程都不能向前执行。           1.1  顺序加锁lock    ...

    2013-12-11 14:15
    2363
  • C++并发实战7:thread::mutex

    创建一个互斥量std::mutex; mutex::lock(),mutex::unlock()互斥量的加锁解锁,try_lock未加锁时加锁否则不加锁返回false。但是不建议直接使用lock和un...

    2013-12-10 10:51
    2813
  • C++并发实战6:thread::id

    线程标识符id可以通过thread::get_id()获得,若thread obejct没有和任何线程关联则返回一个NULL的std::thread::id表示没有任何线程。当前线程若想获得自己的id...

    2013-12-04 17:37
    2519

img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部