TLS 与 python thread local

TLS

先说TLS( Thread Local Storage), wiki上是这么解释的:

Thread-local storage (TLS) is a computer programming method that uses static or global memory local to a thread.

线程本地存储(TLS)是一种电脑编程技术, 它用静态或者全局的存储器来保存线程本地的变量(意译)。

 

其目的是为了实现变量隔离,即“同一个”全局变量,对于不同的线程,其值可以不同(类似副本的概念)。参考以下python的实现及说明。

 

python thread local

import threading
global_storage=threading.local()

 

副本作用

# -*- coding:utf-8 -*-
import threading
global_storage = threading.local()
import time
def test_local():
	time.sleep(1)
	if hasattr(global_storage,'x'):
		global_storage.x+=1
	else:
		global_storage.x=0
	print global_storage.x

if __name__=='__main__':
	for i in range(3):
		threading.Thread(target=test_local).start()

以上代码将会输出3个0(x有三个副本)

而不是0,1,2(x并非唯一的单例)

 

当然,对于单线程来讲,thread local 就弱化为了一个全局变量池

 

转载请注明本文来自:http://www.cnblogs.com/Tommy-Yu/p/5459291.html,谢谢!

posted @ 2016-05-04 17:52  tommy.yu  阅读(598)  评论(0编辑  收藏  举报