C++的forward progress guarantee:震惊,哥德巴赫猜想竟被程序找出反例(不是)
为了学习C++内存模型读了cpp reference page,发现了一个有意思的东西:forward progress guarantee。它是说,对于一个合法的C++程序,它的每个线程(或者说每个控制流)最终需要至少做下面四件事中的一个:
为了学习C++内存模型读了cpp reference page,发现了一个有意思的东西:forward progress guarantee。它是说,对于一个合法的C++程序,它的每个线程(或者说每个控制流)最终需要至少做下面四件事中的一个:
最近在给kobayashi-compiler补risc-v的线程管理功能,相当于要用汇编写一个迷你的runtime,提供__create_threads
和__join_threads
两个函数。但是问题来了,创建线程用的clone调用的raw syscall接口在不同架构上不一样(见manpage的C library/kernel differences部分),而它并没有提到risc-v上这个接口是啥样的。
4 月 5 日早上起来,发现昨天晚上充满电的手机关机了,开机之后剩 30% 的电。现在想起来应该是夜里过热关机了。晚上为了其他事情看了眼服务商的网站,发现一天跑了五六十 GB 的流量。赶紧去看手机上的 Clash for Android,自这次开机以来用了三十多 GB,而且还在继续跑,速度在 200KB/s 到 2MB/s 之间。这时候手机又在发烫了。