
多线程
广州市民林先生
无。
展开
-
基于C++写一个线程池
线程池的设计大致需要包含这几部分: 线程请求队列(存放业务请求)、 工作线程(进行业务处理)、 线程同步模块(互斥量、信号量) 以及操作请求队列的接口(append)。 下面代码封装了一个简易的线程池,采用模板类进行实现 template<class T> class threadpool { public:原创 2020-11-29 19:17:26 · 239 阅读 · 0 评论 -
C++实现-用三个线程分别打印’A’、’B’、’C’,线程1打印A,线程2打印B,线程3打印C,请实现三个线程同时启动并协作始终打印 ABCABCABC….
题目为:用三个线程分别打印’A’、’B’、’C’,线程1打印A,线程2打印B,线程3打印C,请实现三个线程同时启动并协作始终打印 ABCABCABC….,是在牛客网上看到的阿里一面的题目。 首先要实现轮次有序打印ABC,就必须让线程1先执行,然后再让线程2执行,最后再让线程3执行,最后再回到线程1,以此循环往复。所以就需要保证线程的执行顺序,且单个线程在执行的时候,不能受到其他两个线程的干扰,那比较容易想到采用锁。 那肯定不能单纯的让三个线程去竞争锁,因为无法保证线程1首先拿到锁,再到线程2和线程3,所以需原创 2020-07-13 11:08:28 · 1881 阅读 · 0 评论 -
windows编程线程同步之条件变量
条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待 “条件变量的条件成立” 而挂起;另一个线程使 “条件成立”,然后唤醒另一个等待线程。 C++11提供了多线程线程同步的条件变量接口可以调用,一般都需要配合互斥量进行使用,常说到的生产者-消费者模型就可以用条件变量进行实现。 主要用到的结果接口有: void wait(std::unique_lock<std::mutex>& lock); //Predicate 谓词函数,第二个参数可为lambda表原创 2020-07-11 11:04:37 · 696 阅读 · 0 评论 -
linux多线程socket通信与互斥量
什么是线程 每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程,可以把线程称作程序执行流的最小单位。每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。可以用下面的图表示,更加直观,协程是更加轻量级的线程,这里就不叙述了。 单线程与多线程 单线程:单线程在程序执行时,所走的程序路径按照连续顺序排下来,前面的必须处理好,后面的才会执行...原创 2020-01-29 12:24:28 · 746 阅读 · 0 评论 -
C++单例模式与多线程安全
用代码实现如下: class Singleton { public: static Singleton* CreateObj() { if (m_pInstance == NULL) { m_pInstance = new Singleton(); } return m_pInstance; } void test() { cout << "访问单例类的接...原创 2020-01-23 17:21:53 · 2019 阅读 · 0 评论