PHP 에서 pthread 확장 사용
1.Thread 클래스
기본 생 성 및 사용:
<?php
// Thread MyThread
class MyThread extends Thread{
//
function __construct(){
}
// run ( )
function run(){
}
}
// java
$mt = new MyThread();
$mt->start();
물론 스 레 드 클래스 로 서 스 레 드 상 태 를 조회 하고 스 레 드 를 관리 하 는 다른 방법 이 있어 야 합 니 다.
<?php
// id
Thread::getCreatorId
// id
Thread::getCurrentThreadId
//
Thread::getCurrentThread
//
Thread::join
// ( join)
Thread::isJoined
//
Thread::kill
2.Worker 클래스Worker 클래스 의 부모 클래스 는 Thread 클래스 이기 때문에 기본 적 인 용법 은 Thread 와 같 습 니 다.한편,Worker 류 는 Thread 류 에 비해 스 레 드 재 활용 기능 을 추 가 했 습 니 다.(스 레 드 를 없 애 는 데 소모 되 는 자원 을 낮 추기 위해)보통 Stackable 류 와 연 결 됩 니 다.즉,Worker 류 는 스 레 드 로 도 사용 할 수 있 고 작업 의 용기 로 도 사용 할 수 있 습 니 다.예 를 들 어:
<?php
class Task extends Stackable{
function __construct($no){
$this->no = $no;
}
function run(){
echo "task{$this->no}:run".PHP_EOL;
}
}
class MyWork extends Worker{
function __construct(){
}
function run(){
}
}
$t1= new Task(1);
$t2= new Task(2);
$t3= new Task(3);
$my = new MyWork();
$my->stack($t1);
$my->stack($t2);
$my->start();
$my->stack($t3);
최종 출력:task1:run
task2:run
task3:run
물론 Worker 클래스 는 부모 스 레 드 를 관리 하 는 다른 방법 도 있 습 니 다.
//
Worker::getStacked
// worker
Worker::isShutdown
// worker
Worker::isWorking
// worker
Worker::shutdown
//
Worker::stack
// ( api , )
Worker::unstack
2.PHP 스 레 드 에 부 딪 힌 문제 와 주의 점1.스 레 드 류 의 속성 은 해시 표(배열)작업 을 직접 할 수 없습니다.예 를 들 어:
//
$this->var1["hello"] = "world";
//
$this->var1 = ["hello"=>"world"];
왜?스 레 드 클래스 속성의 할당 은 직렬 화 를 통 해 이 루어 지기 때문에 본질 적 으로 직렬 화 된 데 이 터 를 저장 하기 때문에 PHP 에서 해시 표(배열)를 직접 조작 하 는 작업 은 지원 되 지 않 습 니 다.2.스 레 드 클래스 의 속성 은"패키지 함수"일 수 없습니다.
원인:패 킷 함수 가 직렬 화 되 지 않 습 니 다.따라서 스 레 드 에'리 셋 함수'를 사용 하려 면 스 레 드 를 포기 하 세 요.
3.스 레 드 대상 이 phop 의 두 번 째 공간 을 열 었 습 니 다.
(1)스 레 드 가 생 성 된 후에 부모 스 레 드 의 변수 에 접근 할 수 없습니다.예 를 들 어$GLOBALS 나 global 등 용법 으로 부모 스 레 드 의 전역 변 수 를 조작 할 수 없습니다.이것 은 스 레 드 안전 문 제 를 고려 한 것 입 니 다.
(2)그러나 부모 스 레 드 는 하위 스 레 드 대상 의 내용 에 접근 할 수 있 습 니 다.
PHP 에서 pthread 확장 을 사용 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 PHP pthread 확장 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.