就是默认 shared_ptr<> 但是发现这个变量只用于函数传递过程中,没有生命周期的逃逸。那就直接优化成 unique_ptr<> 就行了。其实我还进一步优化到申请在栈里面。
在我的编程语言里面,因为原生支持协程,所以几乎不存在回调函数指针 lambda 这些。变量的生命周期非常好管理。
我现在写 C++ 实际上已经使用我自己这一套思维。实践下来,变量生命周期发生逃逸一般只出现在启动协程。此时需要用到 shared_ptr<>
filenames: list[str] = [...]
error = ptr[str]()
fiber = spawn(self.send_many_files, filenames, error)
# 干点其它事。
fibler.join()
if s := error.value():
print("error occured:", s)
可以看到上面 filenames 和 error 两个变量的生命周期跳出了当前函数。我的想法是大不了就复制一份 (list 使用 cow 技术),实在不行就用 ptr[] 来传递。
【 在 stub 的大作中提到: 】
: 自动探测化场景啥意思
--
修改:hgoldfish FROM 120.37.23.*
FROM 120.37.23.*