《PHP高并发编程》15-01-多线程场景介绍与准备
线程是一组指令的集合,或者是程序的特殊段,它可以在程序
题记:以前一直以为PHP没有线程的概念,只有进程的概念php多线程,最近在学习PHP相关知识,才发现:原来PHP也有线程的概念!线程 线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行,也可以把它理解为代码运行的上下文,所以线程基本上是轻量级的进程。 多线程 多个线程在单进程环境中执行多个任务。 一个进程中的所有线程都可以访问该进程的组成部件,如文件描述符和内存。 包括全局变量。 线程和进程的不同之处在于,在子线程中做的修改会影响到主线程当中的变量。 而我们子进程中做的修改呢,是不会影响到主进程中的变量的!它任意修改都没有关系! 注意 只要单个资源需要在多个用户间共享,就必须处理一致性问题。这在多进程中也同样会存在! 就比如说子进程同时读取一个文件,可能读取的时候是一个内容,当我们修改的时候会被覆盖掉!我们最后的一个进程所做的覆盖呢,会变成最终的那个值!只有存在一个不确定的因素 而多进程通过提高资源使用率来提高系统效率,但是线程控制时需要防止死锁发生。 由于线程的特殊性,它共享的一个全局变量,所以当我们需要访问一个资源的时候,需要特别注意! pthreads 扩展 第一步:PHP编译启用ZTS:--enable-maintainer-zts zts就是 zend-thread-safety 就是线程安全的意思,所以我们需要开启它!! 默认的php-fpm 都是关闭的!!因为我们在web中是不需要线程的! 当这个选项开启的时候,它会战胜一定的效率的!所以默认是关闭的! 第二步:安装 pecl 扩展 pthreads: 可以通过 pecl 命令来安装,也可以通过源码安装! 当我们安装好了,可以通过 php -m 来查看! (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |