代潇瑞博客

PHP线程安全(TSRM)概念

| 点击次数:12249

在单线程环境中,我们经常使用全局变量实现多个函数间数据共享,声明函数之外的变量为全局变量,全局变量为各线程共享,不同的线程引用同一地址空间,如果一个线程修改了全局变量就会影响到所有的线程。


因此:线程安全(TSRM)就是指多线程环境下如何安全的获取公共的资源。


php的SAPI多数是单线程环境的,比如Cli、Fpm、Cgi,每个进程只启动一个主线程,这种模式下是不存在线程安全问题的。但是也是有多线程的环境,比如Apache或者用户自己嵌入的php实现的环境,这种情况下就需要考虑线程安全的问题了。因为php中使用了很多全局变量,经常使用的EG、CG等宏就是用来获取公共资源的。


在多线程的环境下使用全局变量,将会引起线程之间的冲突,因此,php实现了一个线程安全资源管理器(Thread Safe Resource Manager 简称TSRM),用于解决多线程环境下公共资源冲突的问题,实现线程之间安全的操作公共资源。

摘自:PHP7内核剖析

【相关推荐】

触屏版 | 电脑版

Copyright © 2013 代潇瑞博客手机版

QQ: 446673330

粤ICP备13071969号-1