国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

PHP多線程(pthreads)參數(shù)傳遞學(xué)習(xí)筆記

2024-05-04 21:47:54
字體:
供稿:網(wǎng)友

PHP多線程編程中可以通過Thread,Worker的構(gòu)造方法傳遞變量到線程,也可以通過線程的public屬性或public方法實(shí)現(xiàn),經(jīng)研究發(fā)現(xiàn)都是通過serialize()和unserialize()實(shí)現(xiàn)傳遞,這樣就會(huì)造成幾個(gè)問題:

測(cè)試環(huán)境:OS: win7 64、PHP: 5.4.25 ts、pthreads: 0.1.0

1.性能問題

2.PDO等某些類型不能serialize所以就不能傳遞到線程,這兩個(gè)問題是能通過其他凡是解決的,解決方法仁者見仁智者見智.

另外.可以通過傳遞匿名函數(shù)到線程中.但是有個(gè)bug.匿名函數(shù)不能賦值給線程中的屬性.導(dǎo)致傳遞的匿名函數(shù)只能在線程的構(gòu)造方法中才能使用(call_user_fun*系列函數(shù)調(diào)用).

Thread屬性定義一定要注意必須在構(gòu)造方法中初始化,否則必定為null,__construct()和run()里面的代碼不在一個(gè)次元,如果屬性不是PHP標(biāo)量在run()中不能修改,例如構(gòu)造方法中初始化一個(gè)對(duì)象,然后run()中修改對(duì)象屬性不會(huì)生效.

正確寫法如下:

  1. abstract class Task extends Thread { 
  2.  private $finished
  3.  public $terminated
  4.  protected $id
  5.  public $terminate
  6.  public function __construct($id) { 
  7.   $this->id = $id
  8.   $this->terminated = true; 
  9.   $this->finished = false; 
  10.   $this->terminate = false; 
  11.  } 

錯(cuò)誤寫法如下:

  1. abstract class Task extends Thread { 
  2.  private $finished=false; 
  3.  public $terminated=false; 
  4.  protected $id;// www.survivalescaperooms.com 
  5.  public $terminate=false; 
  6.  public function __construct($id) { 
  7.   $this->id = $id
  8.  } 

這樣也是錯(cuò)的,無論stdClass還是數(shù)組,代碼如下:

  1. abstract class Task extends Thread { 
  2.  private $info
  3.  public function __construct($task) { 
  4.   $this->info = array(); 
  5.   $this->info ['task'] = $task
  6.   $this->info ['finished'] = false; 
  7.   $this->info ['terminate'] = false; 
  8.   $this->info ['terminated'] = false; 
  9.   $this->info ['error'] = false; 
  10.   $this->info ['info'] = array (); 
  11.  } 

后來研究又發(fā)現(xiàn),復(fù)合類型的數(shù)據(jù)整體賦值貌似能起作用,如果程序有很多回調(diào)函數(shù)在線程內(nèi)部用的話就是找死啊.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南平市| 星座| 合作市| 岱山县| 门头沟区| 隆德县| 赣州市| 永德县| 泾川县| 东城区| 汝南县| 阜新| 杭锦后旗| 新宁县| 灵寿县| 西乌| 斗六市| 静海县| 石景山区| 兴海县| 东乡族自治县| 维西| 葫芦岛市| 永济市| 大渡口区| 太谷县| 满洲里市| 繁峙县| 江阴市| 夏河县| 神木县| 通山县| 惠东县| 正宁县| 延安市| 晋城| 太湖县| 阳朔县| 焉耆| 桑日县| 邵阳县|