首页 > 编程语言 >php-pcntl函数记录

php-pcntl函数记录

时间:2022-08-16 13:12:10浏览次数:54  
标签:fork PHP 函数 thread 数为 进程 pcntl php

pcntl_fork

官方文档摘录:

 1 (PHP 4 >= 4.1.0, PHP 5, PHP 7)
 3   pcntl_fork — 在当前进程当前位置产生分支(子进程)。译注:fork是创建了一个子进程,父进程和子进程 都从fork的位置开始向下继续执行,不同的是父进程执行过程中,得到的fork返回值为子进程 号,而子进程得到的是0。
 4 
 5 说明
 6   pcntl_fork ( void ) : int
 7   pcntl_fork()函数创建一个子进程,这个子进程仅PID(进程号) 和PPID(父进程号)与其父进程不同。fork怎样在您的系统工作的详细信息请查阅您的系统 的fork(2)手册。
 8 
 9 返回值
10   成功时,在父进程执行线程内返回产生的子进程的PID,在子进程执行线程内返回0。失败时,在 父进程上下文返回-1,不会创建子进程,并且会引发一个PHP错误。
11 
12 范例
13 Example #1 pcntl_fork() 示例
15 <?php
16 
17 $pid = pcntl_fork();
18 //父进程和子进程都会执行下面代码
19 if ($pid == -1) {
20     //错误处理:创建子进程失败时返回-1.
21      die('could not fork');
22 } else if ($pid) {
23      //父进程会得到子进程号,所以这里是父进程执行的逻辑
24      pcntl_wait($status); //等待子进程中断,防止子进程成为僵尸进程。
25 } else {
26      //子进程得到的$pid为0, 所以这里是子进程执行的逻辑。
27 }
28 
29 ?>

如果循环调用的,按照文档内容: 在当前进程当前位置产生分支.

那么for循环下thread关系为:

 

 

简单定义如下

PT: parent thread.

ST: son thread.

pcntl_fork总是会生成一个父子成对的进程来执行。

那么循环的次数决定运行中产生总的进程数为: 2^n。比如循环3,那么总的进程数为: 2^3 = 8。

因为成对出现的特性,那么父子进程各为: 2^n/2。比如循环3,那么子进程数为: 2^3/2 = 4。

标签:fork,PHP,函数,thread,数为,进程,pcntl,php
From: https://www.cnblogs.com/supermarx/p/16591204.html

相关文章

  • php:输出关联数组特定范围的数据
    php:输出关联数组特定范围的数据    一、php源码(将“关联数组”转化为“索引数组”,然后输出) 1<?php23//definedatastructure4class......
  • opencv4.x 中的plot函数绘制二维Mat
     发现一个好玩的二维图像绘制函数,与大家共同欣赏:)参考网址:OpenCV4入门061:使用plot2d绘制折线图-食铁兽(feater.top) 头文件:#include<opencv2/plot.hpp>动态库:-l......
  • MySQL 内置函数 持续更新
    MySQL取整函数四舍五入round()/round(‘值’,小数点位数)round(((po.gross_weight-po.tare_weight)-(pc.weight_deduction*0.001)),2)asactual_tonnage,向下取整FLOO......
  • 【SQL】窗口函数:分区求数据的累计值和累计百分比
    〇、概述1、所需资料窗口函数实现组内百分比、累计值、累计百分比:https://blog.csdn.net/weixin_39751959/article/details/888289222、背景需求:不同场景不同规则下各......
  • C# 深度复制对象 反序列化方式与复制构造函数方式的效率分析
    先看结果 所以复制构造函数优于序列化和反序列化代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Diagnostics;usingSystem.Linq;using......
  • php:面向对象之成员变量(数组)
    php:面向对象之成员变量(数组)    一、PHP源码  1<?php23classDATA{4public$dlt_data="";56//setvalue......
  • SQL函数
    SQL函数:分类:1. 数据库提供函数2. 人为定义的函数(后补) 一、数据库提供函数1.内置函数sysdate:当前系统时间(日期)dual:哑......
  • leetcode636-函数的独占时间
    函数的独占时间栈使用栈记录调用过程。如果log为start,那么就加入堆栈。如果是end,则分两种情况:栈不为空,意味着存在递归调用,那么说明当前的函数占用了上一个函数的使用......
  • 一些常用模板及函数(非竞赛)
    1.判断素数boolisPrime(intnum){ if(num==1)returnfalse; for(inti=2;i<=int(sqrt(num));i++) if(num%i==0) returntrue; returntrue;}......
  • pytest常用hook函数
    pytest_runtest_makereport说明:收集每个用例三个阶段的执行结果先执行when='setup'返回前置的执行结果然后执行when='call'返回用例步骤的执行结果最后执行when='t......