在多線程或並發中控制事務的解決方案


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,兩個互不影響。這個類的主要作用是可以在線程范圍內共享變量值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM