joinable detachable 等待线程完成的方式 调用线程(的线程)在等待被调用的线程结束时,为保证一定会执行join方法,需要捕获 定义被调用线程 到 正常调用join方法 之间的异常,在异常处理中要调用join方法,然后再throw异常 使用RAII方式,在析构函数中等待 向线程函数传 ...
分类:
编程语言 时间:
2020-07-18 16:06:06
阅读次数:
72
void func(int i, double d, const string& s) { cout << i << ", " << d << ", " << s << endl; } int main() { thread t(func, 1, 12.50, "sample"); t.join() ...
分类:
编程语言 时间:
2020-07-08 19:59:08
阅读次数:
81
RAII是什么 RAII全称是“Resource Acquisition is Initialization”,即资源获取即初始化。RAII技术被认为是C++中管理资源、避免泄露的最佳方法,可以实现安全、简洁的状态管理,编写出优雅的异常安全的代码。因为C++的语言机制保证了,当一个对象创建的时候,自 ...
分类:
编程语言 时间:
2020-06-01 20:41:03
阅读次数:
76
# 一面 1. RAII底层原理,使用Java实现2. TCP讲一下,泛洪攻击讲一下怎么避免,TCP keepalive了解吗?3. 数据库隔离级别,不同隔离级别的现象解释一下。4. 数据库的锁机制5. 悲观锁、乐观锁讲一下6. 自旋锁互斥锁,适用于什么场景,自旋锁底层实现7. TCP的RST了解吗... ...
分类:
编程语言 时间:
2020-04-21 12:45:59
阅读次数:
84
C++的核心理念之一是RAII,Resource Acquisition Is Initialization,资源获取即初始化。资源有很多种,内存、互斥锁、文件、套接字等;RAII可以用来实现一种与作用域绑定的资源管理方法(如 );这些都不在本文的讨论范围之内。 内存是一种资源。从字面上来看,“资源 ...
分类:
其他好文 时间:
2020-04-20 23:24:08
阅读次数:
76
RAII(Resource Acquisition Is Initialization),也称为“资源获取就是初始化”,是C++语言的一种利用对象生命周期来控制资源的技术。 简单的说,RAII 的做法是使用一个对象,在其构造时获取资源,在对象生命期控制对资源的访问使之始终保持有效,最后在对象析构的时 ...
分类:
其他好文 时间:
2020-01-09 13:27:09
阅读次数:
72
线程没有调用join和detach thread对象必须调用join或者detach,否则程序会终止 例如: c++ void func() { std::cout ...
分类:
编程语言 时间:
2019-10-23 11:56:50
阅读次数:
107
析构函数有2种方式调用,一个是主动调用delete,另一个是根据RAII的规则,在对象的生命周期结束时自动析构。第一点没什么好说的,就简单讲下第二点。 对象的生命周期不等于是程序的生命周期,一般我们所谓的生命周期就是一个作用域,当变量或者对象离开这个作用域时就会自动析构。一般一对{}就是一个作用域, ...
分类:
编程语言 时间:
2019-04-27 13:03:24
阅读次数:
126
一:线程与进程 1. 进程 :是一个正在执行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元; 2.线程 : 进程的一个独立控制单元,进程不共享数据,线程可以共享数据 3多线程:使用并发原理,是多个线程呈现出共同运行的情况 二:线程的生命周期 1.新建:从线程被建立 ...
分类:
编程语言 时间:
2019-04-02 12:39:59
阅读次数:
177
[toc] 一、介绍 最近在写一个项目,其中用到好几个单例,类本身的设计不是很复杂,但是如果每个都写一遍单例又觉得有点冗余;所以查资料写了一个单例基类模板,只要一个类继承这个基类并且以自身作为模板参数就可以实现一个单例;关于单例本身的介绍在这里不重点介绍。 特点: RAII,使用 std::shar ...
分类:
编程语言 时间:
2019-02-06 10:43:38
阅读次数:
388