| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
GPM 多线程协程调度器 for PHP Extension
NOTICE:TSRM 使变量共享变得复杂和低效,目前仅用于学习研究
# 编译php必须加上 ZTS支持
> wget https://www.php.net/distributions/php-7.3.5.tar.gz
> tar zxvf php-7.3.5.tar.gz & cd php-7.3.5
> ./configure --prefix=/path/to/ --enable-cli --with-config-file-path=/path/to/etc
--sysconfdir=/path/to/etc --enable-maintainer-zts
# 编译扩展
> cd /path/to/goos
> php7.3.5-ize
> ./configure --with-php-config=php7.3.5-config
> make install
> echo 'extension=go.so' >> phpetcpath/php.ini
<?php
Runtime::GOMAXPROCS(10);
$ref = ["ref"];
for($i = 0;$i <100; $i++)
{
//support reference params
go(function()use($i,&$ref){
go(function(){
var_dump($i,$ref);
});
});
}
Runtime::wait();<?php
//设置只有一个工作线程,在不抢占的情况下,永远无法触发 go 2
Runtime::GOMAXPROCS(1);
go(function(){
for(;;) echo "go 1\n";
});
go(function(){
for(;;) echo "go 2\n";
});
Runtime::wait();| Back | FazBrowse Home | New Git URL |