0
点赞
收藏
分享

微信扫一扫

d的属性效果2


有一段时间我也有​​类似​​​想法,过去出现了很多​​潜在​​​用例.
最明显示例是​​​vibe.d​​​的目前仅用作文档的​​@blocking​​​等,但如果可在​​编译时​​​强制​​@nonblocking​​​等,就非常有用,目前只有​​运行时​​方法.

是的,一般,​​异步​​​有大量​​这类​​​用途.除了​​不占用​​​工作线程外,响应​​取消请求​​​也是好事.
说到​​​阻塞​​​,我设想的效果之一是类似"循环".与其他阻塞相比,循环中的​​某些阻塞​​​对事件驱动的​​i/o​​​模型的危害更大,至少可由​​信号​​​或其他东西​​中断​​​其他阻塞调用.
一方面,你可能认为​​​denies_effect!loops​​​是疯狂的.如何完成工作?但是有两个有趣的地方:​​1)​​​可用高阶函数来定义它;​​2)​​​D的​​foreach​​​循环很特别.
看,​​​foreach​​​循环,可以是​​opApply​​​函数调用上的语法糖,可以说其中​​一个循环​​​只是具有​​opApply​​​的效果(因而必然会​​添加​​​用户提供的​​闭包​​的效果,当然).

所以可想象​​opApply​​​使用​​隐藏​​​效果,来实现循环,但插入自己的周期​​if(yield()==CANCEL)return;​​​逻辑,来提供​​普通​​​返回到​​调度事件循环​​​和​​取消​​​的机会.事实上,甚至可在该过程中自动并行化​​工作块​​​.
当然,用户也可用​​​受信任​​的隐藏效果,但要提醒他们小心.


举报

相关推荐

0 条评论