博客专栏  >  编程语言   >  Linux多线程编程C++

Linux多线程编程C++

linux下C++多线程编程实战

关注
39 已关注
25篇博文
  • muduo简化(1):Reactor的关键结构

    说明:本文参照muduo代码,主要用意是简化muduo代码呈现其主要结构,并脱离muduo的文件依赖。           本节简化的是Reactor的关键结构部分:EventLoop、Poller、...

    2013-11-17 21:17
    1750
  • Thread系列的RAII封装

    #include #include #include #include #include #include #include #include #include #include #include #...

    2013-11-15 00:16
    2271
  • fork与多线程

    如果一个多线程程序调用了fork,那么新创建的子进程只拥有一个执行线程(调用fork的那个线程的完整复制),并且子进程自动继承父进程的互斥锁(条件变量)的状态,即父进程中被加锁的互斥量在子进程中也是被...

    2013-11-03 21:10
    1858
  • RAII封装TCP连接

    文件描述符的分配方式:使用当前最小可用的文件描述符。在多线程环境中文件描述符容易出错:若一个线程A持有一个描述符fd,另一个线程B在close(fd)后立即open一个描述符刚好值等于前面的fd,那么...

    2013-11-03 17:07
    1448
  • 线程私有数据TSD

    在单线程程序中,我们经常要用到"全局变量"以实现多个函数间共享数据。在多线程环境下,由于数据空间是共享的,因此全局变量也为所有线程所共有。但有时应用程序设计中有必要提供线程私有的全局变量,仅在某个线程...

    2013-11-03 10:50
    1609
  • __thread关键字

    __thread是GCC内置的线程局部存储设施,存取效率可以和全局变量相比。__thread变量每一个线程有一份独立实体,各个线程的值互不干扰。可以用来修饰那些带有全局性且值可能变,但是又不值得用全局...

    2013-11-03 09:04
    9603
  • exit:c++非线程安全

    exit调用会终止整个进程,在_exit的基础上执行一系列用户空间操作比如刷新缓冲区。_exit是直接交给内核,exit先执行清除操作再交给内核。exit或_exit时,系统无条件的停止剩下所有操作,...

    2013-11-02 21:48
    1566
  • 有限容量BlockingQueue:消费者生产者

    有限容量的BlockingQueue实现工作队列,用于生产者消费者问题。 #include #include #include #include #include #include #inclu...

    2013-11-02 12:54
    1749
  • 再看copy_on_write缩小临界区的例子

    本例子是模拟的读者写者问题,采用shared_ptr+写时拷贝实现,其中我觉得一个比较值得注意的地方是考虑到对象可能在临界区析构而将析构移除临界区,这对于多线程来说要多看多思。 #include...

    2013-10-31 21:53
    1135
  • pthread_once重塑singleton模式

    单件模式是非线程安全的: // Single threaded version class Foo { private Helper helper = null; public ...

    2013-10-31 21:49
    1777
  • 条件变量:BlockingQueue+CountDownLatch

    条件变量pthread_cond_t又名管程,条件变量的正确使用方式: 1 必须与pthread_mutex_t一起使用,条件的读写受互斥量保护 2 必须在pthread_mutex_lock后才能调...

    2013-10-29 23:14
    1310
  • 多个非同源的shared_ptr管理对象引起double free

    有多个不同源的shared_ptr管理对象时会出现多次释放对象,这里不同源是指多组间不是通过拷贝构造、复制等手段而来的,即几组shared_ptr是独立声明的。 #include #include ...

    2013-10-29 09:09
    1723
  • 临界区重叠:移出临界区+shared_ptr写时拷贝

    死锁例子:          一些函数看似其本身是线程安全的,但是当多个函数同时执行时出现了非线程安全。一个例子是多个函数在多线程下同时执行时临界区相互重叠 #include #include #i...

    2013-10-28 23:36
    1148
  • 同一函数可能加锁可能不加锁使用

    当一个函数可能在加锁状态下使用,也可能在不加锁状态下使用时,将函数分割为两个版本:加锁版本,不加锁版本 如下例子: #include #include //#include #include ...

    2013-10-28 20:25
    1259
  • STL与多线程+写时拷贝

    STL并不是线程安全的,当多个线程同时读取STL时没什么问题。当多个线程中有写STL时则非线程安全,导致其它线程的end()检测或迭代器算术操作无意义,修改操作可能导致STL重新分配内存,原来的迭代器...

    2013-10-27 20:40
    1886
  • RAII:互斥量

    RAII(资源获取即初始化)基本技术原理很简单,如果希望保持对某个重要资源的跟踪,那么创建一个对象,并将资源的生命期和对象的生命期相关联。这样的话,就可以利用c++复杂老练的对象管理机制来管理资源。最...

    2013-10-27 13:58
    1226
  • boost::bind

    Bind 创建函数对象来绑定到一个函数(普通函数或成员函数)。不需要直接给出函数的所有参数,参数可以稍后给,这意味着绑定器可以用于创建一个改变了它所绑定到的函数的 arity (参数数量) 的函数对象...

    2013-10-25 22:31
    1059
  • shared_ptr:弱回调技术

    场景:公司company存有公司员工的信息,现在给定一个查询接口,给定员工姓名在公司中查找若找到返回员工信息,若没有找到在公司录入这个员工信息。      1 若简单在公司company中用一个容器保...

    2013-10-24 23:34
    1965
  • shared_ptr:线程安全、循环引用

    shared_ptr用来管理堆对象可以避免delete,但是注意shared_ptr本身是个对象因此其的声明周期、shared_ptr对象的读写操作非原子化那么在多线程环境下仍然存在很多问题,即sha...

    2013-10-23 23:33
    1863
  • boost智能指针重塑订阅者模式

    boost智能指针:        scoped_ptr            简单的单一对象的唯一所有权。不可拷贝。//一旦离开作用域所指对象立即释放        scoped_array  ...

    2013-10-22 23:43
    1401

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