首页 > 编程语言 >php线程安全(TS)和非线程(NTS)安全区别 本文来源:码农网 本文链接:https://www.codercto.com/a/11473.html

php线程安全(TS)和非线程(NTS)安全区别 本文来源:码农网 本文链接:https://www.codercto.com/a/11473.html

时间:2023-03-19 20:59:07浏览次数:62  
标签:本文 www php windows 线程 linux 进程 多线程

以下线程安全简称TS

非线程安全简称NTS

首先unix/linux不强调使用线程模型,强调使用多进程模型,windows下面才强调使用多线程。创建进程的速度比创建线程慢几倍,并且相互通信比线程慢很多,毕竟人家线程是资源共享嘛,并且进程通信相对麻烦,至于为什么 linux 还强调使用多进程模型呢?首先看下多线程和多进程的优缺点

多进程优点:资源独立,不会相互影响,各种不同的代码水平的程序不会相互影响

多线程优点:资源共享,创建线程速度快,相互通信快

个人认为使用多进程是因为资源独立,奔溃不受影响,这也是linux稳定的原因之一吧!具体是什么原因这里不讨论了如果您知道请在评论中写上。

早期的window上面使用iis+php是使用CGI方式的,就是需要不停创建进程,而在windows中创建进程的消耗是比较大的。所以windows推出了isapi多线程运行才能保证效率,可是上面提到了多线程和多进程的优缺点,php很多扩展是在采用linux下推荐的多进程模型,这些扩展在windows下面运行可能会造成iis的奔溃,这对于高可用来说是不能忍受的。所以就有了线程安全版本,不会弄垮iis服务器。


但是我想保证效率的同时也要保证iis的安全怎么办呢?这是要就有人提出fastcgi概念,就是将cgj解释进程保存在内存中,接受fastcgi进程管理器的调度,然后复用的过程,

总结:如果您在windows中使用isapi运行 php 就要使用ts版本,如果使用了cgi或者fastcgi使用nts,保证了效率的同时也保证了安全,当然由于linux推荐使用多进程直接使用nts版本即可。


 



标签:本文,www,php,windows,线程,linux,进程,多线程
From: https://www.cnblogs.com/ma863/p/17234221.html

相关文章

  • 多线程
    多线程线程的创建Thread类自定义线程类继承Thread类重写run()方法,编写线程执行体创建线程对象,调用start()方法启动线程publicclassDemo01extendsThread{p......
  • Java多线程开发CompletableFuture的应用
    ​做Java编程,难免会遇到多线程的开发,但是JDK8这个CompletableFuture类很多开发者目前还没听说过,但是这个类实在是太好用了,了解它的一些用法后相信你会对它爱不释手(呸渣男,......
  • 线程池
    packageedu.wtbu;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;publicclassDemo04{publicstaticvoidmain(String[]a......
  • 外界参数控制多线程队列进行与否
    业务场景,最近遇到个需求,就是通过点击开始/继续要控制任务进度,刚开始想到了线程wait,notify本人是个比较懒得人,一想到要写那么多代码空值,要等待,唤醒,睡眠啥的就觉得麻烦,出......
  • 13 中断线程
    代码1概述避免workqueue中存在多个work会导致后面的work执行存在受前面工作的影响在中断下半部专门申请一个内核线程来处理这个事件,这个内核线程专门用于此中断1.1内......
  • 温习:进程和线程的区别
    进程和线程的区别:1、定义不一样,进程是执行中的一段程序,线程是进程里执行中的任务,一个进程里可以有多个线程。2、一个线程只能属于一个进程。3、线程无地址空间,它包括在......
  • CAS 是一种什么样的同步机制?多线程下为什么不使用 int 而使用 AtomicInteger?
    CompareAndSwap,比较交换。可以看到synchronized可以保证代码块原子性,很多时候会引起性能问题,volatile也是个不错的选择,但是volatile不能保证原子性,只能在某些场合下使......
  • 关于java.lang.ThreadDeath线程发生场景及模拟代码测试
    当调用stop()方法时会发生两件事:1.即刻停止run()方法中剩余的全部工作,包括在catch或finally语句中,并抛出ThreadDeath异常(通常情况下此异常不需要显示的捕获),因此可能会导......
  • Java线程池详解
    1使用线程池的好处降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗;提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行;提高线程的......
  • 如何实现主线程打印子线程的结果(阿里一面)
    1.自定义runnable接口实现类publicclassMySyncThreadTest{publicstaticvoidmain(String[]args)throwsException{CustomRunnablecRunnacle=new......