修复异步模式下概率性导致输出日志不完整的问题 #49
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary:
[背景]:异步输出模式开启、断言开启,elog_async.c在初始化时,elog_async_init创建子线程完成后,
子线程处理函数async_output在一开始会对全局变量init_ok进行断言,如果为false,那么就无法进入
后续sem_wait流程,进行结果输出了;而init_ok是在子线程创建完之后,elog_async_init最后才设置
为true的,这样程序的正确执行就取决于父子线程的调度顺序了
[解决办法]:子线程的处理程序中无需对init_ok进行判断,因为在while循环体中sem_wait会保证只有在
有需要输出的内容时,才会触发后续的内容输出过程