zoukankan      html  css  js  c++  java
  • 在多线程或并发中控制事务的解决方案

    1 前言

      控制多线程同步的方法很多,比如加同步锁机制,但是这会带来一定的性能消耗,因为要排队机制,前段时间看了别人的代码有个类(ThreadLocal<T>  泛型类)引起了我的注意。

    2. 概念ThreadLocal

      查看MSDN解释:提供数据的线程本地存储,其实通俗易懂的讲就是一个变量在多个线程中实现多个拷贝(副本),因为多线程的机制,由于各个线程的变量是互不影响的,所以不用担心变量引起了污染,各用各的不用担心。

      比如在数据库连接操作或是ORM上下文操作的时候就可以实现多个线程的共用变量,把操作数据的上下文放在ThreadLocal<EFContext>,每个线程都有自己的上下文操作对象。由于asp.net 是多线程机制,所以各个请求互不影响,这个在工作单元模式中可以使用.

    补充:ThreadLocal<T> 简单易俗的说就是每个线程在范围内(当前线程内部)可以保存相关数据,这个数据只对当前线程有效,比如 定义一个变量 int i=1, 线程A 操作i变量自增10次 那么i在该线程的值是10,B线程内自增5次,那么i在线程的值是5,两个互不影响。这个类的主要作用是可以在线程范围内共享变量值。

  • 相关阅读:
    fiddler的使用
    redis pipeline
    redis hash map
    redis队列的实现
    PHP-redis中文文档-命令
    websocket
    c++之socket,阻塞模式
    Django上传文件和修改date格式
    通过字符串导入模块
    'CSRFCheck' object has no attribute 'process_request' 报错
  • 原文地址:https://www.cnblogs.com/zhangxue/p/6907889.html
Copyright © 2011-2022 走看看