cobalt: StorageManager调用析构函数时,last_change_timer_或change_max_delay_timer_中有任务,可能被丢弃
cobalt: When StorageManager calling destructor , there is task in last_change_timer_ or change_max_delay_timer_ ,it maybe be discarded
我发现StorageManager 在调用析构函数时会调用FinishIO 和OnDestroy。它会在FinishIO中等待sql_message_loop和savegame_thread_完成,重置资源包括flush_on_last_change_timer_和flush_on_change_max_delay_timer_。所以当iStorageManager调用析构函数时,如果flush_on_last_change_timer_或flush_on_change_max_delay_timer_中有一个任务,它可能会丢弃这个任务并导致最后一个savegame操作失败。是问题还是我没理解对
感谢您指出这一点。我相信你是对的;如果 StorageManager 在计时器关闭之前被破坏,那么最后一次保存似乎不会发生。这将在以后的 Cobalt 版本中修复。
我发现StorageManager 在调用析构函数时会调用FinishIO 和OnDestroy。它会在FinishIO中等待sql_message_loop和savegame_thread_完成,重置资源包括flush_on_last_change_timer_和flush_on_change_max_delay_timer_。所以当iStorageManager调用析构函数时,如果flush_on_last_change_timer_或flush_on_change_max_delay_timer_中有一个任务,它可能会丢弃这个任务并导致最后一个savegame操作失败。是问题还是我没理解对
感谢您指出这一点。我相信你是对的;如果 StorageManager 在计时器关闭之前被破坏,那么最后一次保存似乎不会发生。这将在以后的 Cobalt 版本中修复。