Closed Antares0982 closed 1 year ago
现在单个插件绑定单个线程,线程如果在插件中被阻塞将导致后续事件无法接收(如,nextMessage)。为保证最大程度并发,广播任务以及启用/禁用任务将在线程池中随机派发给工作线程,通过thread local变量绑定当前工作中的插件名称到工作线程。
libLoader线程当前为轮询来处理插件加载卸载任务。但这样会造成大量cpu资源浪费。以及libLoader线程应负责定时任务的工作。使用信号量解决这些问题,唤醒后再tick。
PlatformExceptionHandler可以通过thread local的变量判断当前线程工作中的插件并卸载对应插件。
API change:loader api将新增一个函数指针,用户编程时无感知,但实现该功能的前后版本无法兼容。
如上
loader
功能描述
现在单个插件绑定单个线程,线程如果在插件中被阻塞将导致后续事件无法接收(如,nextMessage)。为保证最大程度并发,广播任务以及启用/禁用任务将在线程池中随机派发给工作线程,通过thread local变量绑定当前工作中的插件名称到工作线程。
libLoader线程当前为轮询来处理插件加载卸载任务。但这样会造成大量cpu资源浪费。以及libLoader线程应负责定时任务的工作。使用信号量解决这些问题,唤醒后再tick。
PlatformExceptionHandler可以通过thread local的变量判断当前线程工作中的插件并卸载对应插件。
API change:loader api将新增一个函数指针,用户编程时无感知,但实现该功能的前后版本无法兼容。
原因
如上
组件选择
loader