guang19 最近的时间轴更新
guang19

guang19

V2EX 第 575663 号会员,加入于 2022-03-16 14:50:50 +08:00
guang19 最近回复了
35 天前
回复了 DonaldY 创建的主题 程序员 分享文章: TCP 粘包? TCP 警察什么梗
把协议设计好基本不会出现所谓的“粘包”
总有人拿一个文本编辑器跟一个 IDE 比较,这究竟是道德的沦丧还是人性的扭曲呢?
看了下,你这 SEO 怎么解决呢?
146 天前
回复了 guang19 创建的主题 程序员 请教一个 shared_ptr 内存泄漏的问题
@ColorfulBoar 惊了,学习了,谢谢大佬。
146 天前
回复了 guang19 创建的主题 程序员 请教一个 shared_ptr 内存泄漏的问题
@ColorfulBoar 等 5 秒中都不执行的线程,非要手工指定 join 或 detach 状态的线程,你觉得离谱吗?
146 天前
回复了 guang19 创建的主题 程序员 请教一个 shared_ptr 内存泄漏的问题
@ColorfulBoar 那请你帮个忙把这段代码贴到 linux 下去运行下,这个线程会不会执行,我的 archlinux 和 ubuntu 反正是不行的:
````
::std::thread t1([] ()
{
::printf("%s\n", "hello world");
});
::std::this_thread::sleep_for(::std::chrono::milliseconds(5000));
````
146 天前
回复了 guang19 创建的主题 程序员 请教一个 shared_ptr 内存泄漏的问题
@elfive 因为我写的这个库是基于 linux 的,所以自己基于 posix pthread 封装的线程,cpp11 的 thread 太难用了,跟坨屎一样,创建之后非要调 join 或 detach 才会执行,join 阻塞主线程就不说了,而 detach 更是难用。
146 天前
回复了 guang19 创建的主题 程序员 请教一个 shared_ptr 内存泄漏的问题
@statumer 谢谢老哥,我大概知道为什么 use_count 为 3 了,在 shared_ptr 传参的过程中被复制了几次,所以造成引用次数不一致。有时候任务线程执行的快,被拷贝的 shared_ptr 来不及析构,lambda 此时执行的时候的 use_count 就是 3 ;任务线程执行的慢,等其他被拷贝的被析构了,只剩下 lambda 捕获的 shared_ptr 了,此时执行 use_count 就是 1 。我又测试了好多遍,虽然 use_count 不一致,但 task 执行的结果却没错,这证明了 lambda 只会是最后一个 shared_ptr ,lambda 结束后并不会造成泄漏。
146 天前
回复了 guang19 创建的主题 程序员 请教一个 shared_ptr 内存泄漏的问题
又 debug 了下,大概是我阻塞队列写的有点问题。。。
146 天前
回复了 guang19 创建的主题 程序员 请教一个 shared_ptr 内存泄漏的问题
我这样写也有问题:
````
auto asyncTask = ::std::make_shared<::std::packaged_task<RetType ()>>(
::std::bind(::std::forward<Fn>(func), ::std::forward<Args>(args)...));
auto future = asyncTask->get_future();
TaskType task = [asyncTask]() mutable
{
assert(asyncTask.use_count() == 1);
(*asyncTask)();
};
assert(asyncTask.use_count() == 2);
````

我发现这应该是 lambda 捕获 shared_ptr 引用错乱的问题,可能不是我代码的问题
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2113 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 23ms · UTC 15:03 · PVG 23:03 · LAX 08:03 · JFK 11:03
Developed with CodeLauncher
♥ Do have faith in what you're doing.