工作日志 线程池概念 线程安全单例模式 线程安全 与 函数重入 死锁概念

⽇志认识

计算机中的⽇志是记录系统和软件运⾏中发⽣事件的⽂件,主要作⽤是监控运⾏状态、记录异常信 息,帮助快速定位问题并⽀持程序员进⾏问题修复。它是系统维护、故障排查和安全管理的重要⼯ 具。

⽇志格式以下⼏个指标是必须得有的

• 时间戳

• ⽇志等级

• ⽇志内容

以下⼏个指标是可选的

• ⽂件名⾏号

• 进程,线程相关id信息等

  线程池: ⼀种线程使⽤模式。线程过多会带来调度开销,进⽽影响缓存局部性和整体性能。⽽线程池维护着多 个线程,等待着监督管理者分配可并发执⾏的任务。这避免了在处理短时间任务时创建与销毁线程的 代价。线程池不仅能够保证内核的充分利⽤,还能防⽌过分调度。可⽤线程数量应该取决于可⽤的并 发处理器、处理器内核、内存、⽹络sockets等的数量。

线程池的应⽤场景:

 • 需要⼤量的线程来完成任务,且完成任务的时间⽐较短。

• 对性能要求苛刻的应⽤,⽐如要求服务器迅速响应客⼾请求。

• 接受突发性的⼤量请求,但不⾄于使服务器因此产⽣⼤量线程的应⽤。

程池的种类

a. 创建固定数量线程池,循环从任务队列中获取任务对象,获取到任务对象后,执⾏任务对象中 的任务接 

b. 浮动线程池,其他同上

线程安全的单例模式

单例模式的特点  某些类,只应该具有⼀个对象(实例),就称之为单例.

例如⼀个男⼈只能有⼀个媳妇.

饿汉实现⽅式和懒汉实现⽅式

饿汉实现方式

饿汉式实现是最简单的单例模式实现方式,它在类加载时就完成单例对象的创建。

特点

  1. 线程安全:由于对象在类加载时就已经创建,所以不存在多线程环境下的并发问题,是线程安全的。

  2. 延迟加载:不需要延迟加载,对象在类加载时就创建了。

  3. 简单:实现简单,易于理解和维护。

  4. 资源占用:可能会造成资源浪费,因为对象在不需要时就已经创建。

懒汉实现方式

懒汉式实现是在第一次使用时才创建单例对象,这样可以延迟对象的创建,节省资源。

特点

  1. 线程安全:需要额外的同步措施来保证线程安全,如使用synchronized关键字或双重检查锁定(Double-Checked Locking)。

  2. 延迟加载:对象在第一次使用时才创建,节省资源。

  3. 复杂性:实现相对复杂,需要处理多线程环境下的同步问题。

  4. 资源节省:只有在需要时才创建对象,避免了不必要的资源占用。

线程安全:就是多个线程在访问共享资源时,能够正确地执⾏,不会相互⼲扰或破坏彼此的执⾏结 果。⼀般⽽⾔,多个线程并发同⼀段只有局部变量的代码时,不会出现不同的结果。但是对全局变量 或者静态变量进⾏操作,并且没有锁保护的情况下,容易出现该问题。(描述对象是线程)

重⼊:同⼀个函数被不同的执⾏流调⽤,当前⼀个流程还没有执⾏完,就有其他的执⾏流再次进⼊, 我们称之为重⼊。⼀个函数在重⼊的情况下,运⾏结果不会出现任何不同或者任何问题,则该函数被 称为可重⼊函数,否则,是不可重⼊函数。(描述对象是函数)

函数是可重⼊的,那就是线程安全的(其实知道这⼀句话就够了)

 死锁

 • 死锁是指在⼀组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站⽤不会 释放的资源⽽处于的⼀种永久等待状态。

• 为了⽅便表述,假设现在线程A,线程B必须同时持有锁1和锁2,才能进⾏后续资源的访问

死锁四个必要条件

 • 互斥条件:⼀个资源每次只能被⼀个执⾏流使⽤ ◦ 

• 请求与保持条件:⼀个执⾏流因请求资源⽽阻塞时,对已获得的资源保持不放

• 不剥夺条件:⼀个执⾏流已获得的资源,在末使⽤完之前,不能强⾏剥夺

• 循环等待条件:若⼲执⾏流之间形成⼀种头尾相接的循环等待资源的关系

避免死锁

 • 破坏死锁的四个必要条件

◦ 破坏循环等待条件问题:资源⼀次性分配,使⽤超时机制、加锁顺序⼀致

STL中的容器是否是线程安全的?

 不是.   原因是STL的设计初衷是将性能挖掘到极致,⽽⼀旦涉及到加锁保证线程安全,会对性能造成巨⼤的影 响.

智能指针是否是线程安全的? 

对于unique_ptr,由于只是在当前代码块范围内⽣效,因此不涉及线程安全问题.

对于shared_ptr, 只能保证指针是安全的 但是指针指向的对象就不一定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值