Closed hyj1991 closed 2 years ago
Merging #198 (9c9d333) into master (27f95d0) will not change coverage. The diff coverage is
n/a
.
@@ Coverage Diff @@
## master #198 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 9 9
Lines 296 296
=========================================
Hits 296 296
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more
背景
早期 1.x 版本在尚未实现
worker_threads
监控时,开发者的采样操作会通过requestInterrupt
&uv_async_send
同时通知js 主线程 —— 这意味着HandleAction
在早期实现中会执行两次。因此旧版实现中在
HandleAction
执行前校验了TransactionDone
这个函数,通过${uuid}::${action}
的唯一 key 设置状态判断当前的 action 是否已经由requestInterrupt
oruv_async_send
执行过了,如果已经执行过,则清理 data 然后返回。而在最新的实现中,将
HandleAction
放置到一个 lambda 回调中:并且这个回调函数会放入每一个 EnvData 对应的
std:list
中,这样requestInterrupt
&uv_async_send
先触发的那一个会通过std::list::swap
执行回调,后触发拿到的std::list
为空不会再触发。这样
HandleAction
只会执行一次,旧版本中设计的TransactionDone
逻辑不再需要。优化
移除当前实现中为
HandleAction
执行两次所做的冗余设计逻辑