Multi-thread
文章平均质量分 71
XDWX
逆水行舟,不进则退。
展开
-
Multi-thread--提高C++性能的编程技术笔记:多线程内存池+测试代码
为了使多个线程并发地分配和释放内存,必须在分配器方法中添加互斥锁。 全局内存管理器(通过new()和delete()实现)是通用的,因此它的开销也非常大。 因为单线程内存管理器要比多线程内存管理器快的多,所以如果要分配的大多数内存块限于单线程中使用,那么可以显著提升性能。 如果开发了一套有效的单线程分配器,那么通过模板可以方便地将它们扩展到多线程环境中。 以下是测试代码(multi_threade...转载 2019-03-25 19:37:24 · 371 阅读 · 0 评论 -
Multi-thread--linux下线程相关函数接口
以下内容转自网络 索引:1.创建线程pthread_create2.等待线程结束pthread_join3.分离线程pthread_detach4.创建线程键pthread_key_create5.删除线程键pthread_key_delete6.设置线程数据pthread_setspecific7.获取线程数据pthread_getspecific8.获取线程标示符pthread_self9.比...转载 2019-03-26 11:23:42 · 202 阅读 · 0 评论 -
Multi_thread--Linux下多线程编程互斥锁和条件变量的简单使用
Linux下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,链接时需要使用库libpthread.a。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器、一组寄存器和栈),但是它可与同属一个进程的其它的线程共享进程...转载 2019-03-24 11:41:48 · 295 阅读 · 1 评论 -
读写锁机制(转载)
转载自:https://www.cnblogs.com/xiehongfeng100/p/4782135.html 博主:峰子_仰望阳光 来源:博客园 在以前的一篇博文Linux多线程编程初探中,只提到了用于线程同步的互斥锁、条件变量,而没有提及读写锁(read-write lock)。 本文主要整理自以下文章: 读写锁(read-write lock)机制-----多线程同步问...转载 2019-06-07 20:59:33 · 262 阅读 · 0 评论 -
Multi-thread提高C++性能的编程技术笔记:单线程内存池+测试代码
频繁地分配和回收内存会严重地降低程序的性能。性能降低的原因在于默认的内存管理是通用的。应用程序可能会以某种特定的方式使用内存,并且为不需要的功能付出性能上的代价。通过开发专用的内存管理器可以解决这个问题。对专用内存管理器的设计可以从多个角度考虑。我们至少可以想到两个方面:大小和并发。 从大小的角度分为以下两种: (1)、固定大小:分配固定大小内存块的内存管理器。 (2)、可变大小:分配任意大小内存...转载 2019-03-25 19:28:16 · 289 阅读 · 0 评论 -
Multi-thread--C++11多线程中std::call_once的使用
C++11中的std::call_once函数位于<mutex>头文件中。 在多线程编程中,有时某个任务只需要执行一次,此时可以用C++11中的std::call_once函数配合std::once_flag来实现。如果多个线程需要同时调用某个函数,std::call_once可以保证多个线程对该函数只调用一次。也可用在解决线程安全的单例模式。template<class Ca...转载 2019-03-25 19:16:49 · 300 阅读 · 0 评论 -
Multi-thread--C++11中std::lock_guard的使用
互斥类的最重要成员函数是lock()和unlock()。在进入临界区时,执行lock()加锁操作,如果这时已经被其它线程锁住,则当前线程在此排队等待。退出临界区时,执行unlock()解锁操作。更好的办法是采用”资源分配时初始化”(RAII)方法来加锁、解锁,这避免了在临界区中因为抛出异常或return等操作导致没有解锁就退出的问题。极大地简化了程序员编写mutex相关的异常处理代码。C++11...转载 2019-03-25 19:06:09 · 517 阅读 · 0 评论 -
Multi_thread--Linux进程编程基础介绍
Linux系统是一个多进程的系统,它的进程之间具有并行性、互不干扰等特点。也就是说,每个进程都是一个独立的运行单位,拥有各自的权利和责任。其中,各个进程都运行在独立的虚拟地址空间,因此,即使一个进程发生异常,它也不会影响到系统中的其他进程。 Linux进程是一个具有独立功能的程序关于某个数据集合的一次可以并发执行的运行活动,是处于活动状态的计算机程序。进程作为构成系统的基本细胞,不仅是系统内部...转载 2019-03-20 00:50:47 · 538 阅读 · 1 评论 -
Multi-thread--Windows和Linux下通用的线程接口
对于多线程开发,Linux下有pthread线程库,使用起来比较方便,而Windows没有,对于涉及到多线程的跨平台代码开发,会带来不便。这里参考网络上的一些文章,整理了在Windows和Linux下通用的线程接口。经过测试,在Windows和Linux下均可正常使用。 Windows和Linux下对应的线程函数列表如下: Windows和Linux线程通用接口如下:#ifndef FBC_ME...转载 2019-03-24 19:39:34 · 509 阅读 · 1 评论 -
Multi_thread--Linux下多线程编程中信号量介绍及简单使用
在Linux中有两种方法用于处理线程同步:信号量和互斥量。 线程的信号量是一种特殊的变量,它可以被增加或减少,但对其的关键访问被保证是原子操作。如果一个程序中有多个线程试图改变一个信号量的值,系统将保证所有的操作都将依次进行。信号量一般常用于保护一段代码,使其每次只被一个执行线程运行。信号量是用来调协线程对共享资源的访问的。 通过使用信号量可以很好的完成线程同步。两个线程同时监视同一个信号量。A...转载 2019-03-24 20:25:04 · 364 阅读 · 1 评论 -
Multi-thread--C++11中<thread>的使用
C++11中加入了<thread>头文件,此头文件主要声明了std::thread线程类。C++11的标准类std::thread对线程进行了封装。std::thread代表了一个线程对象。应用C++11中的std::thread便于多线程程序的移值。 <thread>是C++标准程序库中的一个头文件,定义了C++11标准中的一些表示线程的类、用于互斥访问的类与方法等。 类...转载 2019-03-24 21:03:17 · 755 阅读 · 0 评论 -
Multi-thread--C++11中<atomic>的使用
原子库为细粒度的原子操作提供组件,允许无锁并发编程。涉及同一对象的每个原子操作,相对于任何其他原子操作是不可分的。原子对象不具有数据竞争(data race)。原子类型对象的主要特点就是从不同线程访问不会导致数据竞争。因此从不同线程访问某个原子对象是良性(well-defined)行为,而通常对于非原子类型而言,并发访问某个对象(如果不做任何同步操作)会导致未定义(undifined)行为发生。...转载 2019-03-24 21:22:15 · 682 阅读 · 0 评论 -
Multi-thread--C++11中std::mutex的使用
C++11中新增了<mutex>,它是C++标准程序库中的一个头文件,定义了C++11标准中的一些互斥访问的类与方法等。其中std::mutex就是lock、unlock。std::lock_guard与std::mutex配合使用,把锁放到lock_guard中时,mutex自动上锁,lock_guard析构时,同时把mutex解锁。mutex又称互斥量。 C++11标准库定义了...转载 2019-03-24 21:50:01 · 315 阅读 · 0 评论 -
Multi-thread--C++11中std::condition_variable的使用
<condition_variable>是C++标准程序库中的一个头文件,定义了C++11标准中的一些用于并发编程时表示条件变量的类与方法等。 条件变量是并发程序设计中的一种控制结构。多个线程访问一个共享资源(或称临界区)时,不但需要用互斥锁实现独享访问以避免并发错误(称为竞争危害),在获得互斥锁进入临界区后还需要检验特定条件是否成立: (1)、如果不满足该条件,拥有互斥锁的线程应该...转载 2019-03-25 08:40:36 · 284 阅读 · 0 评论 -
Multi-thread--C++11中std::unique_lock的使用
std::unique_lock为锁管理模板类,是对通用mutex的封装。std::unique_lock对象以独占所有权的方式(unique owership)管理mutex对象的上锁和解锁操作,即在unique_lock对象的声明周期内,它所管理的锁对象会一直保持上锁状态;而unique_lock的生命周期结束之后,它所管理的锁对象会被解锁。unique_lock具有lock_guard的所...转载 2019-03-25 09:42:05 · 663 阅读 · 0 评论