POCO1.4.1p1中Event同步对象的POSIX实现不够严谨,WIN32实现直接采用windows提供的event对象,而POSIX下采用条件变量模拟事件,但是没有考虑到cancellation point的问题,可能导致程序行为异常,下面代码注释的pthread_cleanup_push和pthread_cleanup_pop是我加上的,项目中放开这两个注释后暂时未重现异常问题。
本文探讨了POCO库中Event同步对象在POSIX环境下的问题,指出其使用条件变量模拟事件时未考虑cancellation point,可能导致程序异常。提供了一个改进的实现,增加了pthread_cleanup_push和pthread_cleanup_pop来解决潜在问题。
POCO1.4.1p1中Event同步对象的POSIX实现不够严谨,WIN32实现直接采用windows提供的event对象,而POSIX下采用条件变量模拟事件,但是没有考虑到cancellation point的问题,可能导致程序行为异常,下面代码注释的pthread_cleanup_push和pthread_cleanup_pop是我加上的,项目中放开这两个注释后暂时未重现异常问题。
2239

被折叠的 条评论
为什么被折叠?