一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - PHP教程 - PHP實現(xiàn)簡單的協(xié)程任務(wù)調(diào)度demo示例

PHP實現(xiàn)簡單的協(xié)程任務(wù)調(diào)度demo示例

2021-09-28 11:42阿威,awin PHP教程

這篇文章主要介紹了PHP實現(xiàn)簡單的協(xié)程任務(wù)調(diào)度demo,結(jié)合實例形式詳細(xì)分析了PHP基于協(xié)程的任務(wù)調(diào)度基本原理、定義及使用技巧,需要的朋友可以參考下

本文實例講述了PHP實現(xiàn)簡單的協(xié)程任務(wù)調(diào)度。分享給大家供大家參考,具體如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
class Task
{
  protected $taskId;
  protected $coroutine;
  protected $sendValue = null;
  protected $beforeFirstYield = true;
  public function __construct($taskId, Generator $coroutine)
  {
    $this->taskId = $taskId;
    $this->coroutine = $coroutine;
  }
  public function getTaskId()
  {
    return $this->taskId;
  }
  public function setSendValue($sendValue)
  {
    $this->sendValue = $sendValue;
  }
  public function run()
  {
    if ($this->beforeFirstYield) {
      $this->beforeFirstYield = false;
      return $this->coroutine->current();
    } else {
      $retval = $this->coroutine->send($this->sendValue);
      $this->sendValue = null;
      return $retval;
    }
  }
  public function isFinished()
  {
    return !$this->coroutine->valid();
  }
}
class Scheduler
{
  protected $maxTaskId = 0;
  protected $taskMap = []; // taskId => task
  protected $taskQueue;
  public function __construct()
  {
    $this->taskQueue = new SplQueue();
  }
  public function newTask(Generator $coroutine)
  {
    $tid = ++$this->maxTaskId;
    $task = new Task($tid, $coroutine);
    $this->taskMap[$tid] = $task;
    $this->schedule($task);
    return $tid;
  }
  public function schedule(Task $task)
  {
    $this->taskQueue->enqueue($task);
  }
  public function run()
  {
    while (!$this->taskQueue->isEmpty()) {
      $task = $this->taskQueue->dequeue();
      $task->run();
      if ($task->isFinished()) {
        unset($this->taskMap[$task->getTaskId()]);
      } else {
        $this->schedule($task);
      }
    }
  }
}
function task1()
{
  for ($i = 1; $i <= 10; ++$i) {
    echo "This is task 1 iteration $i.\n";
    sleep(1);
    yield;
  }
}
function task2()
{
  for ($i = 1; $i <= 10; ++$i) {
    echo "This is task 2 iteration $i.\n";
    sleep(1);
    yield;
  }
}
$scheduler = new Scheduler;
$scheduler->newTask(task1());
$scheduler->newTask(task2());
$scheduler->run();

運行結(jié)果:

This is task 1 iteration 1.
This is task 1 iteration 2.
This is task 1 iteration 3.
This is task 1 iteration 4.
This is task 1 iteration 5.
This is task 1 iteration 6.
This is task 1 iteration 7.
This is task 1 iteration 8.
This is task 1 iteration 9.
This is task 1 iteration 10.

希望本文所述對大家PHP程序設(shè)計有所幫助。

原文鏈接:https://blog.csdn.net/qq_22640823/article/details/103596953

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 西西人体大胆啪啪私拍色约约 | 欧美视频一级 | 超兴奋朋友的中文字幕下 | 日本人黄色 | 久久综合久久伊人 | 成人嗯啊视频在线观看 | 91高清国产视频 | 天堂成人在线视频 | 91精品综合久久久久久五月天 | 日本中文字幕一区二区有码在线 | 国产在线精品成人一区二区三区 | 日本ccc三级 | 波多野结衣一区免费作品 | 欧美夜夜精品一级爽 | 嘿嘿午夜| 国产第一福利影院 | 黄色aaa级片| 色啊色| 国产精品日韩欧美一区二区三区 | 亚洲国产日韩欧美在线vip1区 | 亚洲精品97福利在线 | 国产精品怡红院永久免费 | 2021麻豆剧果冻传媒入口永久 | 免费看国产一级特黄aa大片 | 色婷婷影院在线视频免费播放 | wwwav在线 | 好逼365| aⅴ视频在线免播放观看 | 午夜在线观看免费观看 视频 | 成人午夜毛片 | 美国复古性经典xxxxx | 鬼吹灯天星术在线高清观看 | 逼逼日| 欧美黑人一级 | 91在线老王精品免费播放 | 久久国产加勒比精品无码 | 亚洲天堂男人 | 久久91精品国产91久久户 | 艾秋麻豆果冻传媒老狼仙踪林 | 亚洲国产精品第一区二区三区 | 欧美男男gaygaysxxx |