![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
进程与多线程
12th
一步一个自己
展开
-
并发和多线程基础之概念
1、什么是并发?什么是多线程? 答:A、最简单和最基本的并发之两个或多个独立的活动同时发生。 B、计算机中的并发:当系统同时执行多个独立的任务,而非顺序的进行一些活动。 C、多进程并发:是将应用程序分为多个独立的进程,他们在同一时刻运行,就像同时浏览网页和文字处理一样。独立的进程可以通过常规的通信渠道进行信息之间的传递(信号、套接字、文件、任务管道),缺点...原创 2018-04-22 12:45:28 · 194 阅读 · 0 评论 -
并发与多线程基础之线程管理
1、启动线程、向线程传递参数:#include<iostream>#include<thread>#include<chrono>using namespace std;//线程函数void func(int a, int b, int c){ std::this_thread::sleep_for(std::chrono::seconds...原创 2018-04-22 15:35:41 · 206 阅读 · 0 评论 -
并发与多线程基础之线程之间共享数据
1、共享数据带来什么问题? A、条件竞争:并发中竞争条件的形成,取决于一个以上线程的相对执行顺序,每个线程都抢着完成自己的任务。大多数情况下,即使改变执行顺序,也是良性竞争,其结果可以接受。例如,有两个线程同时向一个处理队列中添加任务,因为系统提供的不变量保持不变,所以谁先谁后都不会有什么影响。当不变量遭到破坏时,才会产生条件竞争,比如双向链表的例子。并发中对数据的条件竞争通常表示为...原创 2018-04-22 16:42:21 · 1502 阅读 · 0 评论 -
并发与多线程之实战一
实现一个消息队列 1、可以将消息以指针(指向基类)的方式存储在列表中; 2、指定消息类型会由基类派生模板进行处理 3、推送包装类的构造实例,以及存储指向这个实例的指针。 4、弹出实例的时候,将会返回其指针 5、因为message_base类没有任何成员函数,在访问存储消息之前, 弹出线程就需要将指针转换为wrapped_message指针。namespace messageing{ cl...原创 2018-04-29 14:13:12 · 500 阅读 · 0 评论 -
并发与多线程之实战二
发送消息,经过类Sender处理过的消息 1、只能对已经推送到消息队列中的消息进行包装 2、对sender实例的拷贝,只是拷贝了指向队列的指针,而非队列本身。namespace messaging{ class sender { queue*q; public: sender(): q(nullptr) ...原创 2018-04-29 15:24:15 · 130 阅读 · 0 评论