博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
不要在函数离开临界区之前返回
阅读量:6692 次
发布时间:2019-06-25

本文共 513 字,大约阅读时间需要 1 分钟。

hot3.png

我在一个函数中是这样写的:

//错误代码::EnterCriticalSection( &cs );CVariety* cva = gVarietyManager.LookUp(conTmp);if (cva == NULL) return;//....其他::LeaveCriticalSection( &cs );

这段程序是错误的,因为在没有离开临界区就返回了,导致程序死锁. 所以,写多线程程序的时候,检查每条返回路径,看看是不是在程序返回之前都离开了临界区.

//修改::EnterCriticalSection( &cs );CVariety* cva = gVarietyManager.LookUp(conTmp);if (cva == NULL){ ::LeaveCriticalSection( &cs );//在函数返回之前离开临界区 return;}//....其他::LeaveCriticalSection( &cs );

一定要记住:不要在函数离开临界区之前返回

转载于:https://my.oschina.net/zhaomengit/blog/186245

你可能感兴趣的文章
[USACO3.2]Sweet Butter
查看>>
关于三角形的一个不等式
查看>>
Elementary Methods in Number Theory Theorem 1.1 Division algorithm
查看>>
<10>获取当前时间
查看>>
Jenkins的构建编号和一个有趣的bug
查看>>
EF添加关联的提示问题:映射从第 260 行开始的片段时有问题:
查看>>
【JDK1.8】JUC——AbstractQueuedSynchronizer
查看>>
2.可变与不可变
查看>>
PCI Express(三) - A story of packets, stack and network
查看>>
ThinkPHP中添加事件机制
查看>>
OO第一单元总结
查看>>
求1到n,n个整数的全排列
查看>>
PHP7 教程
查看>>
虚拟机VMBox的空间扩展和对加载进来资源的扩展
查看>>
《结对-结对编项目作业名称-需求分析》
查看>>
iView3.x Anchor(锚点)组件 导航锚点
查看>>
Network --- Tcp Protocol
查看>>
sqlite效率探测
查看>>
React生命周期
查看>>
数据库 -- mysql表操作
查看>>