关于
归档
友链
猫咪
后台
切换模式
返回顶部
首页
说说
日常
开发
游戏
资源
虚拟货币
首页
说说
日常
开发
游戏
资源
虚拟货币
关于
归档
友链
猫咪
后台
pthreads的一些坑
开发
·
2018-01-20
LiesAuer
整理总结了一些自己在使用pthreads时遇到的坑,不定期更新。 Env: php version: 7.0.19 pthreads version: 3.1.6 :warning:FBI WARNING 除特殊注明,本文内所有多线程相关代码的结果输出顺序都将会受线程执行顺序影响而不定,如您在实际当中发现您的结果顺序(结果一样,只是顺序错乱)和本文不一致,请保持淡定,都坐下,基本操作,基本操作。 ![TIM图片20180120215329.jpg](https://storage.liesauer.net/2018/01/2471020791.jpg) - [(new class extends \Thread {})->start()将导致代码阻塞](/blog/post/pthreads_trap.html#trap01 "(new class extends \Thread {})->start()将导致代码阻塞") - [函数中创建线程将导致函数阻塞](/blog/post/pthreads_trap.html#trap02 "(函数中创建线程将导致函数阻塞") - [Pool非继承于Threaded](/blog/post/pthreads_trap.html#trap03 "Pool非继承于Threaded") [线程中无法进行哈希表操作以及使用不可序列化的对象](/blog/post/pthreads_trap.html#trap04 "线程中无法进行哈希表操作以及使用不可序列化的对象")
## (new class extends \Thread {})->start()将导致代码阻塞 ### 代码复现 ```php (new class extends \Thread { public function run() { echo "i am new thread\n"; $this->wait(); } })->start(); echo "i am main thread\n"; ``` ### 期待结果 ``` i am new thread i am main thread ``` ### 实际结果 ``` i am new thread ``` ### 解决方案 不使用(new class extends \Thread {})->start()语法 ```php $t = new class extends \Thread { public function run() { echo "i am new thread\n"; $this->wait(); } }; $t->start(); echo "i am main thread\n"; ``` ### 最终结果 ``` i am new thread i am main thread ```
## 函数中创建线程将导致函数阻塞 ### 代码复现 ```php function my_function() { $t = new class extends \Thread { public function run() { echo "i am new thread inside function\n"; $this->wait(); } }; $t->start(); } my_function(); echo "i am main thread\n"; ``` ### 期待结果 ``` i am new thread inside function i am main thread ``` ### 实际结果 ``` i am new thread inside function ``` ### 解决方案 暂无,不确定是否为BUG。
## Pool非继承于Threaded Pool 是标准的 PHP 对象,它并没有继承 Threaded 类,所以不可以在多个线程上下文中共享同一个 Pool 对象。
## 线程中无法进行哈希表操作以及使用不可序列化的对象 以下操作素不行滴: ```php $this->arr['element'] = 'ng'; // 应改为以下形式 $this->arr = ['element'=>'ok']; $this->callback = function(){}; ```
取消回复
提交评论
瞅一瞅叭
服务器推荐
RackNerd 2C2G $20.98/年(美国 隐藏款)
狗云 1C0.75G ¥150/年(香港 BGP)
热门文章
HumanMod - 免费的集N多功能于一身的HFF(人类一败涂地)插件
记抖音爬虫中所遇到的坑
设置网易邮箱大师为Win10默认邮件客户端
微信表情包工具【2023/05/04】更新
更改TLY本地代理端口
让Tauri前端部分调试如调试常规Web项目般丝滑
使用 v2rayN + SSTap 对 Win10 + WSL2 进行超简单易用的科学上网设置
最新评论
ask-to-you: 不是的,你去搜这东西 你就已经在关注了 你肯定买了
土木坛子: 有趣的灵魂。
土木坛子: 确实,真真假假,但不是每个人都能辨别出来,感谢博主指出来。
网友小宋: 之前一直在想,为什么1panel不集成钉钉等等机器人
优惠券网站: msdn,i tell you上面好像有纯净版的系统呀。。。博主...
PinHsin: pipreqs生成的模块和本地版本不一致是什么原因呢
优惠券平台: 写的很详细具体,学习到了,多谢博主的分享!⌇●﹏●⌇
关于站长
佛山
liesauer#liesauer.net
LiesAuer
CC BY-NC-SA 4.0
粤ICP备16094588号-1
萌ICP备20245567号
Theme
Jasmine
by
Kent Liao