国产探花免费观看_亚洲丰满少妇自慰呻吟_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;// m.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ā)表
主站蜘蛛池模板: 东乡县| 甘孜| 龙里县| 北安市| 高邑县| 玉环县| 汕尾市| 秦安县| 息烽县| 霍林郭勒市| 肇东市| 巴楚县| 萨嘎县| 孝感市| 土默特右旗| 凤城市| 保定市| 诏安县| 威远县| 清水河县| 沙雅县| 宁安市| 克拉玛依市| 嵩明县| 五原县| 手机| 宁强县| 裕民县| 辰溪县| 都昌县| 三台县| 来安县| 离岛区| 平阳县| 仲巴县| 且末县| 乌鲁木齐县| 安仁县| 紫阳县| 江达县| 申扎县|