首页 > 其他分享 >线程安全

线程安全

时间:2023-03-27 15:47:07浏览次数:28  
标签:变量 安全 线程 操作 共享 全局变量

1. 代码所在的进程含有多个线程,线程可能会同时运行这段代码,若所有的运行结果是相同的,且其他变量的值也和预期的是一样的,就是线程安全的。

2. 通常线程不安全的对象都是由全局变量或静态变量引起的。

3. 多个线程同时对全局变量、静态变量执行写操作,就会影响线程安全。

解决方案:

1. 加锁 来实现线程执行的串行化

2. 非阻塞同步来实现线程安全。原理就是:通俗点讲,就是先进性操作,如果没有其他线程 争⽤共享数据,那操作就成功了;如果共享数据有争⽤,产⽣冲突,那就再采取其他措施(最 常⻅的措施就是不断地᯿试,知道成功为⽌)。这种⽅法需要硬件的⽀持,因为我们需要操作 和冲突检测这两个步骤具备原⼦性。通常这种指令包括CAS SC,FAI TAS等。

3. 线程本地化,⼀种⽆同步的⽅案,就是利⽤Threadlocal来为每⼀个线程创造⼀个共享变ᰁ 的副本来(副本之间是⽆关的)避免⼏个线程同时操作⼀个对象时发⽣线程安全问题。

标签:变量,安全,线程,操作,共享,全局变量
From: https://www.cnblogs.com/return-study-wa/p/16291459.html

相关文章

  • 线程和进程的区别【Android面试送命题】
    这道题面试出现的概率是百分之70下面我来讲下如何回答1,进程是资源管理的最小单位,线程是程序执行的最小单位2,每个进程都有自己的数据段代码段和堆栈段。线程通常叫做轻型......
  • 多线程
    1、概念线程:线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。进程:进程是程序的基本执行实体。多线程:有了多线程,就可以让程序同......
  • start线程开启(C源码分析)
    一个线程开启都经历了什么publicclassThreadBaseDemo{publicstaticvoidmain(String[]args){Threadt1=newThread(()->{},"t1");......
  • OushuDB 小课堂丨最大限度地提高企业数据安全性:安全数据传输的终极指南
    只有频繁的文件传输才有可能经营现代企业。扩大一个人在数字空间中的影响力和改变工作习惯使这种做法更加普遍。虽然高效,但数据传输可能会给安全性和可信度带来风险。跟上......
  • 安全测试之探索 windows 游戏扫雷
    作者:京东工业 宛煜昕扫雷游戏相信很多人都从小玩过,在那个电脑游戏并不多的时代,扫雷成为玩的热度蛮高的一款游戏之一,然而就在有一次,接触到了一次不寻常的扫雷过程,使得后来......
  • 多线程的同步和互斥—线程的信号量
    同步://account.h#ifndef_ACCOUNT_H#define_ACCOUNT_H#include<pthread.h>#include<semaphore.h>typedefstruct{intcode;doublebalance;......
  • Python多任务-多线程-多进程-协程-进阶学习
    --多任务-多线程-多进程-协程-进阶学习--文中所提到的案例参考:GITHUB中项目文件夹https://github.com/FangbaiZhang/Python_advanced_learning/tree/master/02_Python_ad......
  • Task 类 多线程
    Task类定义命名空间: System.Threading.Tasks程序集:System.Runtime.dll表示一个异步操作publicclassTask:IAsyncResult,IDisposable继承  Object->Task......
  • 线程(确实还有没理解到位的地方)
    多线程Thread类多条执行路径,主线程和子线程并行交替执行packagexiancheng;publicclassDemo01extendsThread{//创建线程方式一:继承Thread类,重写run方法,调用s......
  • 多线程的互斥—读写锁
    //account.h#ifndef_ACCOUNT_H#define_ACCOUNT_H#include<pthread.h>typedefstruct{intcode;doublebalance;//定义一把互斥锁,用......