出现在ready中的列表数据不随动态参数变化

当出现在ready中的列表数据不随动态参数变化时,可考虑watch监听动态变化的值或者再次调用ready[一般不推荐动ready],也可将ready中的逻辑转移到一个新建方法如 init() 中,再在ready中调用这个方法即可,在数据改变的地方添加@change事件
这里注意ready可能会一直调用,所以一定要在前面将被赋值的列表定义为空,以免数据重复赋值。

在C++,子线程通常不会直接将内部变量暴露给主线程,因为它们运行在独立的数据上下文。如果你想要在子线程执行过程修改的数据能够在线程结束后通知到主线程,你可以使用共享内存(如`boost::interprocess`或`std::mutex`、`std::condition_variable`等)以及回调函数。 一种常见的做法是在子线程开始前创建一个数据结构(例如`std::pair<int, std::function<void(int)>>`),其包含你要观察的值和一个回调函数。然后,每当子线程内的值发生变化时,它可以直接更新这个值,并调用回调函数。 这里是使用`std::async`创建子线程并传递回调函数的一个示例: ```cpp #include <future> #include <iostream> // 回调函数模板 template<typename T> void update_and_notify(T value, std::function<void(T)> callback) { // 更新值 value++; // 调用回调函数 callback(value); } int main() { int shared_value = 0; std::function<void(int)> notify_callback = [&](int val) { std::cout << "Callback called with value: " << val << std::endl; }; auto future = std::async(std::launch::async, update_and_notify, shared_value, notify_callback); // 主线程在这里继续工作,子线程会异步执行 // 如果需要,你可以获取结果 if (future.wait_for(std::chrono::seconds(5)) == std::future_status::ready) { std::cout << "Future result: " << future.get() << std::endl; } return 0; } ``` 在这个例子,当你想要查看子线程`shared_value`的变化时,`notify_callback`会被调用。注意,这种方式假设子线程不会无限期地阻塞,如果子线程执行时间过长,`wait_for`可能需要更复杂的错误处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值