亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

PHP信號量基本用法實例詳解

2024-05-04 23:42:53
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了PHP信號量基本用法,較為詳細的分析了PHP信號量的基本概念、使用技巧與相關注意事項,需要的朋友可以參考下
 

本文實例講述了PHP信號量基本用法。分享給大家供大家參考,具體如下:

一些理論基礎:

信號量:又稱為信號燈、旗語 用來解決進程(線程同步的問題),類似于一把鎖,訪問前獲取鎖(獲取不到則等待),訪問后釋放鎖。
臨界資源:每次僅允許一個進程訪問的資源。
臨界區:每個進程中訪問臨界資源的那段代碼叫臨界區
進程互斥:兩個或以上的進程不能同時進入關于同一組共享變量的臨界區域,即一個進程正在訪問臨界資源,另一個進程要想訪問必須等待。
進程同步主要研究如何確定數個進程之間的執行順序和避免數據競爭的問題 即,如何讓多個進程能一塊很好的協作運行

舉例子:(來自百度百科)

以一個停車場的運作為例。簡單起見,假設停車場只有三個車位,一開始三個車位都是空的。這時如果同時來了五輛車,看門人允許其中三輛直接進入,然后放下車攔,剩下的車則必須在入口等待,此后來的車也都不得不在入口處等待。這時,有一輛車離開停車場,看門人得知后,打開車攔,放入外面的一輛進去,如果又離開兩輛,則又可以放入兩輛,如此往復。

在這個停車場系統中,車位是公共資源,每輛車好比一個線程,看門人起的就是信號量的作用。

$key=ftok(__FILE__,'t');/** * 獲取一個信號量資源 int $key [, int $max_acquire = 1 [, int $perm = 0666 [, int $auto_release = 1 ]]]  $max_acquire:最多可以多少個進程同時獲取信號 $perm:權限 默認 0666 $auto_release:是否自動釋放信號量 */$sem_id=sem_get($key);#獲取信號sem_acquire($seg_id);//do something 這里是一個原子性操作//釋放信號量sem_release($seg_id);//把次信號從系統中移除sem_remove($sem_id);//可能出現的問題$fp = sem_get(fileinode(__DIR__), 100);sem_acquire($fp);$fp2 = sem_get(fileinode(__DIR__), 1));sem_acquire($fp2);

Implementation of a read-write semaphore in PHP:

class rw_semaphore {  const READ_ACCESS = 0;  const WRITE_ACCESS = 1;    /**   * @access private   * @var resource - mutex semaphore   */  private $mutex;  /**   * @access private   * @var resource - read/write semaphore   */  private $resource;  /**   * @access private   * @var int   */  private $writers = 0;  /**   * @access private   * @var int   */  private $readers = 0;  /**   * Default constructor   *    * Initialize the read/write semaphore   */  public function __construct() {    $mutex_key = ftok('/home/cyrus/development/php/sysvipc/rw_semaphore.php', 'm');    $resource_key = ftok('/home/cyrus/development/php/sysvipc/rw_semaphore.php', 'r');        $this->mutex = sem_get($mutex_key, 1);    $this->resource = sem_get($resource_key, 1);      }  /**   * Destructor   *    * Remove the read/write semaphore   */  public function __destruct() {    sem_remove($this->mutex);    sem_remove($this->resource);  }  /**   * Request acess to the resource   *    * @param int $mode   * @return void   */  private function request_access($access_type = self::READ_ACCESS) {      if ($access_type == self::WRITE_ACCESS) {      sem_acquire($this->mutex);      /* update the writers counter */      $this->writers++;      sem_release($this->mutex);            sem_acquire($this->resource);    } else {            sem_acquire($this->mutex);            if ($this->writers > 0 || $this->readers == 0) {                sem_release($this->mutex);                sem_acquire($this->resource);                sem_acquire($this->mutex);              }      /* update the readers counter */      $this->readers++;      sem_release($this->mutex);    }  }  private function request_release($access_type = self::READ_ACCESS) {    if ($access_type == self::WRITE_ACCESS) {      sem_acquire($this->mutex);      /* update the writers counter */      $this->writers--;      sem_release($this->mutex);      sem_release($this->resource);    } else {      sem_acquire($this->mutex);      /* update the readers counter */      $this->readers--;      if ($this->readers == 0)        sem_release($this->resource);      sem_release($this->mutex);    }  }  /**   * Request read access to the resource   *    * @return void   */  public function read_access() { $this->request_access(self::READ_ACCESS); }  /**   * Release read access to the resource   *    * @return void   */  public function read_release() { $this->request_release(self::READ_ACCESS); }  /**   * Request write access to the resource   *    * @return void   */  public function write_access() { $this->request_access(self::WRITE_ACCESS); }  /**   * Release write access to the resource   *    * @return void   */  public function write_release() { $this->request_release(self::WRITE_ACCESS); }}

共享內存+信號 實現原子性操作

$SHM_KEY = ftok("/home/joeldg/homeymail/shmtest.php", 'R');$shmid = sem_get($SHM_KEY, 1024, 0644 | IPC_CREAT);$data = shm_attach($shmid, 1024);// we now have our shm segment// lets place a variable in thereshm_put_var ($data, $inmem, "test");// now lets get it back. we could be in a forked process and still have// access to this variable.printf("shared contents: %s/n", shm_get_var($data, $inmem));shm_detach($data); 

以上列子來源php手冊  sem_get 函數comment



注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内精品伊人久久| 精品成人在线视频| 不卡在线观看电视剧完整版| 欧美激情久久久久久| 日韩精品在线看| 国产精品视频公开费视频| 日韩中文在线中文网在线观看| 亚洲国产婷婷香蕉久久久久久| 亚洲午夜未满十八勿入免费观看全集| 2019中文字幕免费视频| 久久久精品免费| 亚洲免费中文字幕| 国产精品第三页| 亚洲综合一区二区不卡| 久久精品夜夜夜夜夜久久| 狠狠色狠狠色综合日日小说| 日韩在线中文视频| 97人洗澡人人免费公开视频碰碰碰| 亚洲精品美女免费| 亚洲aaa激情| 国产日韩在线看片| 久久久免费精品视频| 日韩av毛片网| 91精品国产777在线观看| 国产97免费视| 国产精品高潮呻吟视频| 97超碰蝌蚪网人人做人人爽| 日韩精品中文在线观看| 欧美激情在线一区| 91中文在线观看| 欧美乱妇高清无乱码| 国产精品狼人色视频一区| 亚洲国内高清视频| 懂色av中文一区二区三区天美| 成人两性免费视频| 中文字幕日韩av电影| 日韩欧美成人免费视频| 亚洲精品在线不卡| 精品亚洲一区二区三区四区五区| 欧洲永久精品大片ww免费漫画| 美女av一区二区| 中文字幕在线精品| 91在线播放国产| 欧美一区二区.| 日韩av免费观影| 91久久精品国产91久久性色| 一区二区三区视频免费在线观看| 欧美激情免费在线| 国产中文欧美精品| 一个人看的www久久| 精品久久久久久中文字幕一区奶水| 国产精品久久久久久久久免费看| 欧美日本黄视频| 日韩亚洲第一页| 国产精品国产三级国产aⅴ浪潮| 亚洲人成网7777777国产| 国产精品网站入口| 日韩免费av一区二区| 国产综合福利在线| 午夜精品三级视频福利| 国产亚洲精品久久久久久| 国产91色在线免费| 亚洲精品国产suv| 欧美性猛交xxxx乱大交3| 久久久精品国产亚洲| 欧美激情aaaa| 国内成人精品一区| 91社影院在线观看| 午夜精品久久久久久久久久久久久| 欧美在线视频在线播放完整版免费观看| 欧美日韩性生活视频| 欧美成人在线免费| 国产一区二区三区18| 一区二区成人精品| 亚洲欧美日韩成人| 日韩电影在线观看免费| 国产999在线| 久久精品视频99| 欧美成人网在线| 欧美电影在线观看| 日韩乱码在线视频| 91精品久久久久久久久久久久久| 亚洲国产精品va在线看黑人| 成人精品久久av网站| 亚洲伊人成综合成人网| 亚洲电影免费观看高清完整版| 亚洲国产精彩中文乱码av在线播放| 亚洲精品自产拍| 日韩精品中文字幕有码专区| 成人在线视频网| 欧美电影第一页| 性欧美在线看片a免费观看| 国产成人精品久久二区二区| 久久99久久亚洲国产| 另类色图亚洲色图| 激情懂色av一区av二区av| 国产成人精品优优av| 日韩av中文在线| 精品久久久中文| 91精品在线观| 国产999精品久久久影片官网| 日韩大胆人体377p| 亚洲欧美综合区自拍另类| 日韩免费在线免费观看| 欧美视频在线免费看| 亚洲欧美国产制服动漫| 国产精品免费一区二区三区都可以| 26uuu日韩精品一区二区| 欧美在线视频免费观看| 久久九九亚洲综合| 亚洲色无码播放| 91精品国产91久久久久| 欧美韩日一区二区| 精品福利视频导航| 久久69精品久久久久久国产越南| 亚洲精品一区二区三区婷婷月| 国产精欧美一区二区三区| 黑人巨大精品欧美一区二区免费| 91久久精品日日躁夜夜躁国产| 日韩欧美在线视频观看| 日韩欧美黄色动漫| 久久亚洲成人精品| 在线精品视频视频中文字幕| 国产精品99久久久久久久久久久久| 色综合天天综合网国产成人网| 欧美激情久久久| 国产激情久久久久| 精品动漫一区二区| 日韩av影院在线观看| 欧美老肥婆性猛交视频| 国产成人精品视频在线观看| 美女久久久久久久久久久| 日本精品在线视频| 日韩av网址在线| 亚洲精品福利在线观看| 亚洲国产另类久久精品| 亚洲精品国产品国语在线| 久久99青青精品免费观看| 亚洲成在人线av| 日韩毛片在线看| 俺也去精品视频在线观看| 色婷婷综合久久久久中文字幕1| 久久高清视频免费| 欧美成人午夜激情在线| 精品国产一区久久久| 久久久久久美女| 最近2019中文免费高清视频观看www99| 92看片淫黄大片看国产片| 中文字幕免费精品一区| 亚洲精品国产电影| 亚洲毛片在线观看| 日韩精品日韩在线观看| 欧美激情视频免费观看| 国产午夜精品视频免费不卡69堂| 91tv亚洲精品香蕉国产一区7ujn| 国产91在线视频| 欧美黄色免费网站| 久久久成人精品视频| 97精品国产97久久久久久春色| 久久精品国产免费观看| 韩国福利视频一区| 懂色aⅴ精品一区二区三区蜜月| 亚洲天堂男人天堂女人天堂| 在线观看欧美日韩国产|