Linux——线程首尾(各个小知识及理解)

Linux——信号量和(环形队列消费者模型)-优快云博客



前言

pthread_cp_1_21 · MFF的库/linux - 码云 - 开源中国 (gitee.com)

环形队列,线程池及线程的封装。


一、线程安全的单例模式是什么?

单例模式是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点。在多线程环境下,实现线程安全的单例模式有多种方式,以下是几种常见的实现方式:

饿汉式

  • 特点:在类加载时就立即创建单例实例,不存在线程安全问题,因为类的加载是由 JVM 保证线程安全的。
  • 思路:在程序启动时就创建单例对象,利用静态对象的初始化机制保证线程安全。

代码

#include <iostream>

class Singleton {
private:
    // 构造函数设为私有,防止外部实例化
    Singleton() {}
    // 拷贝构造函数和赋值运算符设为删除,防止拷贝和赋值
    Singleton(const Singleton&) = delete;
    Singleton& operator=(const Singleton&) = delete;

    // 静态成员变量,在程序启动时就初始化
    static Singleton instance;

public:
    // 公共静态方法,用于获取单例实例
    static Singleton& getInstance() {
        return instance;
    }
};

// 静态成员变量的初始化
Singleton Singleton::instance;

int main() {
    Singleton& s1 = Singleton::getInstance();
    Singleton& s2 = Singleton::getInstance();
    std::cout << (&s1 == &s2) << std::endl;  // 输出1,表示是同一个实例
    return 0;
}

Singleton类的构造函数是私有的,避免外部创建对象。instance是静态成员变量,在程序启动时就会初始化,且只会初始化一次,保证了单例的唯一性。getInstance方法返回这个静态实例的引用。 

懒汉式(双重检查锁定)

  • 思路:在第一次使用时才创建对象,通过双重检查锁定和std::mutex来保证线程安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃喵的鲤鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值